flask--表單
今天我說一下表單,提到表單就應該想起來flash閃現。
Web表單是Web應用程式的基本功能,他是HTML頁面中負責資料採集的部件。表單有三個部分組成:表單標籤,表單域,表單按鈕。表單允許使用者輸入資料,負責HTML頁面資料採集,通過表單將使用者輸入的資料提交給伺服器。
在flask框架中使用表單我們可以使用Flask-WTF擴充套件,它呢封裝了WTforms,並且他有驗證表單資料的功能。
當然使用Flask-WTF需要配置引數SECRET_KEY----- CSRF_ENABLED是為了CSRF(跨站請求偽造)保護。SECRET_KEY 用來生成加密令牌,當CSRF啟用的時候,該設定會根據設定的密匙生成加密令牌。
我們可以用表單可以進行登入,註冊 ,但是登入,註冊的時候我們必須得驗證 ~ 這樣才能保證業務的嚴謹性。
使用Flask-WTF實現表單
先配置一個引數,關閉CSRF效驗
在模板頁面上寫表格
<form method ="post">
{{form.username.lable}}{{form.username}}
{{form.password.lable}}{{form.password}}
{{form.password1.lable}}{{form.password1}}
{{form.submit}}
</form>
檢視函式:
匯入的模組from flask import Flask,render_template,flash
#匯入wtf擴充套件的表單類
from flask_wtf import FlaskForm
#匯入自定義表單需要的欄位
from wtforms import SubmitFiled,StringField,PasswordField
#建立一個表單類
class RegisterForm(FlaskForm):
username = StringField('使用者名稱')
password = PasswordField("密碼")
password1 = PasswordField("確認密碼")
submit = SubmitField("註冊")
接下來我給看一下簡單程式碼驗證。
#這是程式碼模擬登入的
<form methof="POSt"># 不寫action的話會預設提交給自己
<lable>使用者名稱:</lable><input type="text" name="username" placeholder ="請輸入使用者名稱">
<lable>密碼:</lable><input type="password" name="password" placeholder ="請輸入密碼>
<lable>確認密碼:</lable><input type="password" name="password1" placeholder ="請輸入確認密碼>
<input type="submit" value = '註冊'>
</form>
#檢視函式中獲取表單資料驗證登入邏輯
@app.route('/yan',method=["get","post"])
def index():
if request.method =="POST"
#獲取表單提交上來的三個引數
username = request.form.get("username")
password = request.form.get("password")
password1 = request.form.get("password1")
if not all([username,password,password1]):
#向前端介面彈出一跳提示(閃現訊息)
flash("引數不足")
elif password != password1:
flash("兩次密碼不一致")
else:
#假裝做註冊操作
print(username,password,password1)
return 'sucess'
return reder_template('temp_register.html')
這個就是模擬驗證登入註冊,裡面有閃現,flash閃現可以直接跳到擁護者面前把訊息直接展示出來
if __name__=='__main__':
app.run()
執行一下就可以了
flash中的訊息閃現,在官方的解釋就是用來給使用者做反饋的,不過實際上這個功能只是一個記錄訊息的方法,在某一個請求中記錄訊息,在下一個請求中獲取訊息,然後做響應的處理,也就是說flask只存在於兩個相鄰的請求中“閃現”,第三次請求就不存在這個flash。 通常情況下配合模板進行呼叫,可以實現一種偽“ajax”請求的效果,基於flash模組。
WTForms是一個支援多個web框架愛的form元件,用於簡化form表單的定義和一些操作。
表單功能在有些情況下非常實用~~~~~~~