關於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...