教程譯文首發自個人博客,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