教程译文首发自个人博客,Defshine's Blog html
若是你尚未阅读本教程的第一部分,能够访问这里:
我翻译的:如何使用Flask开发一个增删改查的应用
英文原文:How to build a CRUD application using Flask python
在以前的教程里,咱们定义了一个Note的数据模型:git
class Note(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80)) body = db.Column(db.Text) def __init__(self, title, body): self.title = title self.body = body
Jaapz告诉我,当建立Note数据模型时,没有必要使用一个自定义的__init__方法:github
https://www.reddit.com/r/flask/comments/4bgisp/how_to_build_a_crud_application_using_flask/d18ygmlsql
因此让咱们移除这个自定义的__init__方法,那你的Note数据模型应该是这样的:数据库
class Note(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80)) body = db.Column(db.Text)
如今咱们将要建立一个笔记的页面。
在main.py:
下面这段代码的上面:django
if __name__ == "__main__": app.run(debug=True)
增长如下代码:flask
@app.route(“/notes/create”, methods=[“GET”, “POST”])
这个路由将会处理HTTP请求的GET和POST方法。
若是你对HTTP方法不太熟悉,你能够参考这里:http://www.tutorialspoint.com/http/http_methods.htm segmentfault
接下来,在路由的下面增长一下代码。
在main.py:浏览器
def create_note(): if request.method == "GET": return render_template("create_note.html") else: title = request.form["title"] body = request.form["body"] note = Note(title=title, body=body) db.session.add(note) db.session.commit() return redirect(“/notes/create”)
若是请求的方法是GET方法,上面这个函数就会渲染create_note.html模板。若是请求方法不是GET方法(在咱们这个例子里,若是请求的方法不是GET方法,咱们就认为这个请求是POST方法。咱们判定请求方法若是不是GET方法就是POST方法,由于咱们的路由只容许处理GET和POST方法)
检查咱们在上面增长的路由:
methods=["GET", "POST"]
回到我刚才说的,若是请求方法不是GET方法,咱们就经过request.form[]获取提交的title和body,而且把它们的值保存在title和body两个变量里。
下面,咱们将初始化一个Note模型,而且把title和body这个两个变量放进去。把Note实例赋给note变量。
获取成为Python开发专家的技巧。访问: http://treehouse.7eer.net/c/245500/245646/3944
下面,咱们把note变量传给 db.session.add()。
而后,咱们调用db.session.commit()把笔记保存到数据库中。 随之,咱们重定向到相同的页面上。
若是你想理解SQLAlchemy的回话(session)是如何工做的,你能够阅读这篇文章:http://pythoncentral.io/understanding-python-sqlalchemy-session/
在template文件夹中,建立一个文件名为create_note.html,而后复制如下内容:
<form action=”/notes/create” method=”POST”> <label>Title</label> <input type=”text” name=”title”> <label>Body</label> <input type=”text” name=”body”> <input type=”submit” value=”Create”> </form>
在这里咱们只是增长了一个HTML表单,它包含两个标签,两个文本框以及一个提交按钮。咱们能够在两个文本框输入笔记的标题和内容。同时,咱们设置表单的方法属性为POST。若是咱们不这里定义一个方法,它就会默认使用GET方法。
若是你对HTML表单不太熟悉,你能够参考这里:http://www.w3schools.com/html/html_forms.asp
如今,你在浏览器里访问http://localhost:5000/notes/create,你应该会看到下图这样:
若是你看到了像“页面未找到”或者“网站没法访问”这样的错误,多是由于你的服务器没有运行。因此,要检查确保服务器是运行的。若是它没有运行,在note_app目录下,经过如下命令运行服务器:
python main.py
当你在建立笔记的页面上,输入标题和内容,经过点击提交按钮就能够建立一则笔记。你应该会被重定向到相同的页面上,可是输入的内容应该会消失。
如今咱们来检查一下笔记是否被保存进了数据库。
在本教程中,咱们将使用一个名为SQLite manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/的工具。
它是一个火狐浏览器的扩展,咱们可使用它管理SQLite数据库。安装,打开火狐浏览器,点击tools,而后点SQLite manager:
找到SQLite manager的文件夹图标并点击它。经过note_app文件夹下的app.sqlite文件打开应用的SQLite数据库。
如今点击Tables,点击note,点击Browse & Search,你应该会看到咱们以前建立的笔记的数据。
在下次的教程中,咱们将建立列表页面,它会展现全部咱们添加到数据库中的笔记数据。或许,也会增长一个编辑笔记的特性。
教程的源代码放在Github上:https://github.com/basco-johnkevin/note-taking-app/tree/master/part2