Flask學習回顧(四)

2021-09-20 15:42:30 字數 3591 閱讀 6443

關於csrf_token:

from flask import flask, render_template, request, flash

from flask_wtf import flaskform

from wtforms import stringfield, passwordfield, submitfield

from wtforms.validators import equalto, datarequired

# 以下為解決python 2的編碼問題!python3不需要!

'''import sys

reload(sys)

sys.setdefultencoding("utf-8")

''''itheima'

'''目的:實現乙個簡單的登入的邏輯處理

1. 路由需要有get和post兩種請求方式 --> 需要判斷請求方式

2. 獲取請求的引數

3. 判斷引數是否填寫 & 密碼是否相同

4. 如果判斷都沒有問題,就返回乙個success

''''''

給模板傳遞訊息

flash --> 需要對內容加密,因此需要設定secret_key,做加密訊息的混淆

模板中需要遍歷訊息

''''''

使用wtf實現表單

自定義表單類

'''class

loginform

(flaskform)

: username = stringfield(

'使用者名稱:'

, validators=

[datarequired()]

) password = passwordfield(

'密碼:'

, validators=

[datarequired()]

) password2 = passwordfield(

'確認密碼:'

, validators=

[datarequired(

), equalto(

'password'

,'密碼填入的不一致!')]

) submit = submitfield(

'提交'

)'/form'

, methods=

['get'

,'post'])

deflogin()

: login_form = loginform(

)# 建立這個類

# 1. 判斷請求方式

if request.method ==

'post'

:# 2. 獲取請求的引數

username = request.form.get(

'username'

) password = request.form.get(

'password'

) password2 = request.form.get(

'password2'

)# 3. 驗證引數,wtf可以一句話就實現所有校驗!

# 我們沒有csrf_token

if login_form.validate_on_submit():

print

(username, password)

return

'success'

else

: flash(

'引數有誤!'

)return render_template(

'index.html'

, form = login_form)

# form是模板中才用的

'/', methods=

['post'

,'get'])

defindex()

:# request: 請求物件 ---> 獲取請求方式、資料

#1. 判斷請求方式

if request.method ==

'post'

:# 2. 獲取請求的引數

username = request.form.get(

'username'

) password = request.form.get(

'password'

) password2 = request.form.get(

'password2'

)print

(password)

# 3. 判斷引數是否填寫 & 密碼是否相同

ifnot

all(

[username, password2, password]):

# 記住這個函式!!

# print('引數不完整!')

flash(u'引數不完整!'

)# 加不加u都無所謂!(有時候可以解決編碼問題)

elif password != password2:

# print('密碼不一致!')

flash(u'密碼不一致!'

)else

:return

'success'

return render_template(

'index.html'

)if __name__ ==

'__main__':)

# 注意python的真值一定要大寫!!!!!

前台index.html:

lang

="en"

>

>

charset

="utf-8"

>

>

titletitle

>

head

>

>

method

="post"

>

>

使用者名稱:label

>

type

="text"

name

="username"

>

>

>

密碼:label

>

type

="password"

name

="password"

>

>

>

確認密碼:label

>

type

="password"

name

="password2"

>

>

type

="submit"

value

="提交"

>

>

}form

>

>

method

="post"

>

}} }

>

} }

>

} }

>

} >

form

>

body

>

html

>

Flask學習回顧(二)

coding utf 8 1.匯入flask擴充套件 from flask import flask 2.建立flask應用程式例項 需要傳入 name 作用是為了確定資源所在的路徑 3.定義路由及檢視函式 flask中定義路由是通過裝飾器實現的!路由預設只支援get,如果需要增加,需要自行指定。m...

Flask學習筆記(四)

進入虛擬環境 我的電腦的虛擬環境在f盤裡,命令列進入f盤後,直接打入virtualenv flask env scripts activate即可進入我的虛擬環境中使用flask。退出虛擬環境 deactivate 1.dialect driver username password host po...

Flask 學習筆記 四 引數接收

路徑引數 請求引數 from flask import flask def params heh print type heh print heh return test params if name main 執行後訪問 列印結果為 lala 可見傳遞引數預設為字串型別 def params he...