Flask——WTF表單
阿新 • • 發佈:2018-11-30
Web表單
Web表單是Web應用程式的基本功能。 它是HTML頁面中負責資料採集的部件,表單有三個部分組成,表單標籤、表單域、表單按鈕。表單允許使用者輸入資料,負責HTML頁面資料採集,通過表單將使用者輸入的資料提交給伺服器。 在Flask中,為了處理Web表單,我們可以使用Flask-WTF擴充套件 ,它封裝了WTForms,並且它具有驗證表單資料的功能。 from flask import Flask,render_template # 匯入WTF提動的表單類 from flask_wtf import FlaskForm # 匯入WTF擴充套件提供的表單欄位 from wtforms import StringField,PasswordField,SubmitField # 匯入WTF擴充套件提供的驗證函式 from wtforms.validators import DataRequired,EqualTo app = Flask(__name__) # 需求:實現簡單的頁面註冊,並獲取使用者輸入的註冊資訊 # 1.自定義表單類,繼承WTF擴充套件提供的表單類 # 例項化表單類物件,傳入模板 # 3.在模板中使用wtf提供的表單 # 設定金鑰 app.config['SECRET_KEY'] = 'bswQyqXfuokWTElaAQnU6cGPIaTwPwNPiES5bAU/dnmWrqAl6WFeqOVRI+ca' class Form(FlaskForm): user = StringField(validators=[DataRequired()]) pswd = PasswordField(validators=[DataRequired(),EqualTo('pswd2')]) pswd2 = PasswordField(validators=[DataRequired()]) subm = StringField('註冊') @app.route('/') def index(): # 例項化表單物件 form = Form # 注意,要保證驗證器生效,需要呼叫函式來實現 # 如果引數滿足驗證器的要求,才獲取引數。如果不呼叫這個引數,會導致在from表單中中輸入的兩次密碼不一致也會接受資料。 # 不僅會驗證請求引數,還會驗證請求的表單域中是否由csrf_token,因此需要保證在模組檔案中設定一個必需引數{{form.csrf_token}} if form.validate_on_submit(): # 獲取引數.request.form.get('user') wtf_user = form.user.data print(wtf_user) return render_template('wtf.html',form = form) if __name__ == '__main__': app.run(debug=True)
·
WTForms支援的HTML標準欄位
欄位物件 說明
StringField 文字欄位 TextAreaField 多行文字欄位 PasswordField 密碼文字欄位 HiddenField 隱藏檔案欄位 DateField 文字欄位,值為 datetime.date 文字格式 DateTimeField 文字欄位,值為 datetime.datetime 文字格式 IntegerField 文字欄位,值為整數 DecimalField 文字欄位,值為decimal.Decimal FloatField 文字欄位,值為浮點數 BooleanField 複選框,值為True 和 False RadioField 一組單選框 SelectField 下拉列表 SelectMutipleField 下拉列表,可選擇多個值 FileField 檔案上傳欄位 SubmitField 表單提交按鈕 FormField 把表單作為欄位嵌入另一個表單 FieldList 一組指定型別的欄位 WTForms常用驗證函式
驗證函式 說明
DataRequired 確保欄位中有資料
EqualTo 比較兩個欄位的值,常用於比較兩次密碼輸入
Length 驗證輸入的字串長度
NumberRange 驗證輸入的值在數字範圍內
URL 驗證URL
AnyOf 驗證輸入值在可選列表中
NoneOf 驗證輸入值不在可選列表中
注意:使用 Flask-WTF 需要配置引數 SECRET_KEY。
CSRF_ENABLED是為了CSRF(跨站請求偽造)保護。 SECRET_KEY用來生成加密令牌,當CSRF啟用的時候,該設定會根據設定的密匙生成加密令牌。