[Web開(kāi)發(fā)] Flask+Python 開(kāi)發(fā)個(gè)人博客(二)

Flask打造個(gè)人博客系列,今天是第一篇,我們?cè)敿?xì)講解登錄赊琳,注冊(cè)模塊街夭。

既然是Flask來(lái)開(kāi)發(fā),你得:

  1. 安裝
pip install Flask

  1. 實(shí)現(xiàn)最簡(jiǎn)單的一個(gè)hello word:

views.py


@app.route("/")

def hello():

return "Hello World!"

run.py


from flask import Flask

app = Flask(__name__)

if __name__ == "__main__":

app.run(debug=True)

在terminal里輸入python run.py, 現(xiàn)在在瀏覽器打開(kāi)http://127.0.0.1:5000, 看看發(fā)生了什么躏筏?:)

很簡(jiǎn)單吧板丽?貌似第2部分點(diǎn)陌生:

@app.route是什么鬼?它正是用于在Flask應(yīng)用中給視圖函數(shù)設(shè)定路由URL的裝飾器趁尼。一頭霧水埃碱?裝飾器是什么? WTF酥泞?

Python裝飾器讓我們可以用其他函數(shù)包裝特定函數(shù)砚殿。 當(dāng)一個(gè)函數(shù)被一個(gè)裝飾器"裝飾"時(shí),那個(gè)裝飾器會(huì)被調(diào)用婶博,接著會(huì)做額外的工作瓮具,修改變量,調(diào)用原來(lái)的那個(gè)函數(shù).

視圖凡人, 路由又是啥玩意名党,簡(jiǎn)單解釋下:


上面的@app.route就等價(jià)于圖中的Routes部分。@app.route('/')就是注冊(cè)了一個(gè)路由(注冊(cè)路由就是建立URL規(guī)則和處理函數(shù)之間的關(guān)聯(lián)挠轴。Flask框架依賴于路由 完成HTTP請(qǐng)求的分發(fā))传睹。這樣當(dāng)你訪問(wèn)“/”這個(gè)path的時(shí)候,python就自動(dòng)把要它聯(lián)系到hello()這個(gè)function上岸晦,controller處理完后就會(huì)返還給你欧啤。

現(xiàn)在我們知道了,視圖函數(shù)hello既然可以返回hello word启上, 那么我們也可以定義其他視圖函數(shù)來(lái)返回注冊(cè)和登錄頁(yè)面邢隧。

代碼示意如下:

views.py

views.py這段代碼作用就是你在url里輸入 “127.0.0.1:5000/login后,flask會(huì)找到login對(duì)應(yīng)的函數(shù)冈在,處理后返回login.html中的內(nèi)容倒慧。那么, login.html 里有哪些內(nèi)容呢包券?

templates/login.html

HTML我們都會(huì)寫一點(diǎn), 但是{}是什么符號(hào)起什么作用呢纫谅?

因?yàn)镻ython直接寫html太麻煩,于是Flask 內(nèi)置了 Jinja2 模板引擎溅固,幫你更方便的寫html付秕。你可以在這個(gè)模板里使用變量或者表達(dá)式,當(dāng)這個(gè)頁(yè)面顯示的時(shí)候侍郭,變量或者表達(dá)式的值就會(huì)填充到你HTML頁(yè)面相應(yīng)的部分询吴,這個(gè)變量或者表達(dá)式的值是從哪里取來(lái)的呢?當(dāng)然是從你flask程序里.

一般Flask 會(huì)在 templates 文件夾里尋找模板亮元。所以汰寓,你只需要用HTML寫兩個(gè)頁(yè)面login.html 和signup.html,然后放到根目錄下的templates文件夾下就可以了苹粟。flask會(huì)自己找到這兩個(gè)頁(yè)面并渲染有滑。

下面簡(jiǎn)述下如何使用inja2模板來(lái)寫html頁(yè)面.

1.安裝:```python
pip install Jinja2


2.使用:如上的HTML。 介紹兩個(gè)常用的變量標(biāo)志符:

{% ... %} for Statements嵌削,例如上文的for循環(huán)語(yǔ)句毛好。

{{ ... }} for Expressions to print to the template output, 例如上文的

{{ form.username }}苛秕,{{ form.password }}.


我們知道登錄的時(shí)候肌访,需要輸入用戶名和密碼,點(diǎn)擊登錄按鈕艇劫,這個(gè)通常放到表單里來(lái)做吼驶,那么點(diǎn)擊登錄會(huì)發(fā)生什么呢?

表單里用戶名和密碼的內(nèi)容會(huì)提交到程序后端處理,對(duì)于Flask來(lái)說(shuō)蟹演,它使用Flask-WTF來(lái)自動(dòng)化表單的操作风钻, 我們來(lái)看看如何處理表單:

1. 安裝

```python
pip install Flask-WTF 
  1. forms.py

表單定義好后,需要配合視圖使用酒请, 也就是我們?cè)趘iews.py的文件頭里骡技,加上:

from forum_app.forms import LoginForm 

這樣你在瀏覽器里輸入 http://127.0.0.1:5000/login,就會(huì)轉(zhuǎn)到login頁(yè)面羞反,輸入用戶名密碼布朦,提交,就會(huì)走login這個(gè)視圖函數(shù)的邏輯了≈绱埃現(xiàn)在再回去看下views.py是趴,你會(huì)發(fā)現(xiàn)

get_member_id_by_username(username)

這個(gè)是什么呢?就是后端的代碼邏輯了澄惊,此處為了從數(shù)據(jù)庫(kù)里根據(jù)用戶名找到用戶id右遭。這個(gè)需要用到SQLAlchemy這個(gè)庫(kù),我之前寫過(guò)相關(guān)的文章缤削,點(diǎn)擊這里查看SQLAlchemy用法窘哈。

通過(guò)這種方法Jinja2 用來(lái)寫前端頁(yè)面templates, Views用來(lái)處理url綁定和視圖亭敢,wtf-forms用來(lái)簡(jiǎn)化表單操作滚婉,F(xiàn)lask就這樣實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的注冊(cè)登錄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帅刀,一起剝皮案震驚了整個(gè)濱河市让腹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扣溺,老刑警劉巖骇窍,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異锥余,居然都是意外死亡腹纳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門驱犹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嘲恍,“玉大人,你說(shuō)我怎么就攤上這事雄驹〉枧#” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵医舆,是天一觀的道長(zhǎng)俘侠。 經(jīng)常有香客問(wèn)我象缀,道長(zhǎng),這世上最難降的妖魔是什么爷速? 我笑而不...
    開(kāi)封第一講書人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任央星,我火速辦了婚禮,結(jié)果婚禮上遍希,老公的妹妹穿的比我還像新娘等曼。我一直安慰自己里烦,他們只是感情好凿蒜,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著胁黑,像睡著了一般废封。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上丧蘸,一...
    開(kāi)封第一講書人閱讀 52,785評(píng)論 1 314
  • 那天漂洋,我揣著相機(jī)與錄音,去河邊找鬼力喷。 笑死刽漂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弟孟。 我是一名探鬼主播贝咙,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼拂募!你這毒婦竟也來(lái)了庭猩?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤陈症,失蹤者是張志新(化名)和其女友劉穎蔼水,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體录肯,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡趴腋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了论咏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片于样。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖潘靖,靈堂內(nèi)的尸體忽然破棺而出穿剖,到底是詐尸還是另有隱情,我是刑警寧澤卦溢,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布糊余,位于F島的核電站秀又,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏贬芥。R本人自食惡果不足惜吐辙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蘸劈。 院中可真熱鬧昏苏,春花似錦、人聲如沸威沫。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)棒掠。三九已至孵构,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間烟很,已是汗流浹背颈墅。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留雾袱,地道東北人恤筛。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像芹橡,于是被迫代替她去往敵國(guó)和親毒坛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容