摘要:獲取成為開發(fā)專家的技巧。我們可以在兩個(gè)文本框輸入筆記的標(biāo)題和內(nèi)容。在本教程中,我們將使用一個(gè)名為的工具。它是一個(gè)火狐瀏覽器的擴(kuò)展,我們可以使用它管理數(shù)據(jù)庫(kù)。安裝,打開火狐瀏覽器,點(diǎn)擊,然后點(diǎn)找到的文件夾圖標(biāo)并點(diǎn)擊它。
教程譯文首發(fā)自我的博客,Defshine"s Blog
如果你還沒有閱讀本教程的第一部分,可以訪問這里:
我翻譯的:如何使用Flask開發(fā)一個(gè)增刪改查的應(yīng)用
英文原文:How to build a CRUD application using Flask
在之前的教程里,我們定義了一個(gè)Note的數(shù)據(jù)模型:
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告訴我,當(dāng)創(chuàng)建Note數(shù)據(jù)模型時(shí),沒有必要使用一個(gè)自定義的__init__方法:
https://www.reddit.com/r/flask/comments/4bgisp/how_to_build_a_crud_application_using_flask/d18ygml
所以讓我們移除這個(gè)自定義的__init__方法,那你的Note數(shù)據(jù)模型應(yīng)該是這樣的:
class Note(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(80)) body = db.Column(db.Text)
現(xiàn)在我們將要?jiǎng)?chuàng)建一個(gè)筆記的頁(yè)面。
在main.py:
下面這段代碼的上面:
if __name__ == "__main__": app.run(debug=True)
增加以下代碼:
@app.route(“/notes/create”, methods=[“GET”, “POST”])
這個(gè)路由將會(huì)處理HTTP請(qǐng)求的GET和POST方法。
如果你對(duì)HTTP方法不太熟悉,你可以參考這里:http://www.tutorialspoint.com/http/http_methods.htm
接下來,在路由的下面增加一下代碼。
在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”)
如果請(qǐng)求的方法是GET方法,上面這個(gè)函數(shù)就會(huì)渲染create_note.html模板。如果請(qǐng)求方法不是GET方法(在我們這個(gè)例子里,如果請(qǐng)求的方法不是GET方法,我們就認(rèn)為這個(gè)請(qǐng)求是POST方法。我們斷定請(qǐng)求方法如果不是GET方法就是POST方法,因?yàn)槲覀兊穆酚芍辉试S處理GET和POST方法)
檢查我們?cè)谏厦嬖黾拥穆酚桑?/p>
methods=["GET", "POST"]
回到我剛才說的,如果請(qǐng)求方法不是GET方法,我們就通過request.form[]獲取提交的title和body,并且把它們的值保存在title和body兩個(gè)變量里。
下面,我們將初始化一個(gè)Note模型,并且把title和body這個(gè)兩個(gè)變量放進(jìn)去。把Note實(shí)例賦給note變量。
獲取成為Python開發(fā)專家的技巧。訪問: http://treehouse.7eer.net/c/245500/245646/3944
下面,我們把note變量傳給 db.session.add()。
然后,我們調(diào)用db.session.commit()把筆記保存到數(shù)據(jù)庫(kù)中。 隨之,我們重定向到相同的頁(yè)面上。
如果你想理解SQLAlchemy的回話(session)是如何工作的,你可以閱讀這篇文章:http://pythoncentral.io/understanding-python-sqlalchemy-session/
在template文件夾中,創(chuàng)建一個(gè)文件名為create_note.html,然后復(fù)制以下內(nèi)容:
在這里我們只是增加了一個(gè)HTML表單,它包含兩個(gè)標(biāo)簽,兩個(gè)文本框以及一個(gè)提交按鈕。我們可以在兩個(gè)文本框輸入筆記的標(biāo)題和內(nèi)容。同時(shí),我們?cè)O(shè)置表單的方法屬性為POST。如果我們不這里定義一個(gè)方法,它就會(huì)默認(rèn)使用GET方法。
如果你對(duì)HTML表單不太熟悉,你可以參考這里:http://www.w3schools.com/html/html_forms.asp
現(xiàn)在,你在瀏覽器里訪問http://localhost:5000/notes/create,你應(yīng)該會(huì)看到下圖這樣:
如果你看到了像“頁(yè)面未找到”或者“網(wǎng)站無法訪問”這樣的錯(cuò)誤,可能是因?yàn)槟愕姆?wù)器沒有運(yùn)行。所以,要檢查確保服務(wù)器是運(yùn)行的。如果它沒有運(yùn)行,在note_app目錄下,通過以下命令運(yùn)行服務(wù)器:
python main.py
當(dāng)你在創(chuàng)建筆記的頁(yè)面上,輸入標(biāo)題和內(nèi)容,通過點(diǎn)擊提交按鈕就可以創(chuàng)建一則筆記。你應(yīng)該會(huì)被重定向到相同的頁(yè)面上,但是輸入的內(nèi)容應(yīng)該會(huì)消失。
現(xiàn)在我們來檢查一下筆記是否被保存進(jìn)了數(shù)據(jù)庫(kù)。
在本教程中,我們將使用一個(gè)名為SQLite manager: https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/的工具。
它是一個(gè)火狐瀏覽器的擴(kuò)展,我們可以使用它管理SQLite數(shù)據(jù)庫(kù)。安裝,打開火狐瀏覽器,點(diǎn)擊tools,然后點(diǎn)SQLite manager:
找到SQLite manager的文件夾圖標(biāo)并點(diǎn)擊它。通過note_app文件夾下的app.sqlite文件打開應(yīng)用的SQLite數(shù)據(jù)庫(kù)。
現(xiàn)在點(diǎn)擊Tables,點(diǎn)擊note,點(diǎn)擊Browse & Search,你應(yīng)該會(huì)看到我們之前創(chuàng)建的筆記的數(shù)據(jù)。
在下次的教程中,我們將創(chuàng)建列表頁(yè)面,它會(huì)展示所有我們添加到數(shù)據(jù)庫(kù)中的筆記數(shù)據(jù)?;蛟S,也會(huì)增加一個(gè)編輯筆記的特性。
教程的源代碼放在Github上:https://github.com/basco-johnkevin/note-taking-app/tree/master/part2
原文地址:https://medium.com/python-flask-django-tutorials-and-tips/how-to-build-a-crud-application-using-flask-python-framework-part-2-6859b4730350#.n0j5pwauj
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/45437.html
摘要:教程譯文首發(fā)自我的博客我們將創(chuàng)建一個(gè)簡(jiǎn)單的數(shù)據(jù)庫(kù)驅(qū)動(dòng)的筆記本應(yīng)用。本教程面向想學(xué)習(xí)如何使用開發(fā)網(wǎng)站或者應(yīng)用的初學(xué)者。在剛創(chuàng)建的文件中,創(chuàng)建一個(gè)名為的文件?,F(xiàn)在,我們將創(chuàng)建一個(gè)函數(shù),并且使用裝飾器將它綁定到一個(gè)上。 showImg(https://segmentfault.com/img/remote/1460000006765797); 教程譯文首發(fā)自我的博客:Defshines Bl...
摘要:準(zhǔn)備數(shù)據(jù)結(jié)構(gòu)這個(gè)以對(duì)一個(gè)簡(jiǎn)單的通訊錄進(jìn)行插入查詢更新刪除記錄為例,中包含和兩個(gè)字段下載還沒出官方的驅(qū)動(dòng)包,是現(xiàn)在比較流行的第三方包,能找到的相關(guān)資料也比較多。準(zhǔn)備實(shí)現(xiàn)對(duì)的增刪改查操作,先想了下怎么寫測(cè)試案例。查找,通過查找該條記錄。 環(huán)境聲明:go version go1.11MongoDB server version 4.0.3 背景 這是我第一次接觸golang和MongoDB,...
摘要:項(xiàng)目地址寫在開頭本文主要分享我如何使用對(duì)實(shí)現(xiàn)增刪改查操作,感謝社區(qū)所有精品文章的幫助,以及的開源項(xiàng)目對(duì)我的啟發(fā)。我們這個(gè)項(xiàng)目是建立一個(gè)班級(jí)學(xué)生管理系統(tǒng),能夠?qū)W(xué)生的姓名及學(xué)號(hào)進(jìn)行增刪改查的操作。 項(xiàng)目地址:https://github.com/jrainlau/mongoose_cru... 寫在開頭 本文主要分享我如何使用express+mongoose對(duì)mongodb實(shí)現(xiàn)增刪改查...
摘要:要達(dá)到水平很高的程序員,第一要找能提供優(yōu)質(zhì)實(shí)踐機(jī)會(huì)的大廠,第二要在諸如高并發(fā)或機(jī)器學(xué)習(xí)的項(xiàng)目里多解決實(shí)際問題,第三還要不斷跳槽,不斷地找更優(yōu)質(zhì)的平臺(tái)和更優(yōu)質(zhì)的項(xiàng)目機(jī)會(huì)。 ...
閱讀 803·2021-11-18 10:02
閱讀 3787·2021-09-02 10:21
閱讀 1814·2021-08-27 16:16
閱讀 2121·2019-08-30 15:56
閱讀 2482·2019-08-29 16:53
閱讀 1422·2019-08-29 11:18
閱讀 3031·2019-08-26 10:33
閱讀 2702·2019-08-23 18:34