文章目錄
一、flask中的flask-wtf插件以及flask集成框架WTForms
1. flask-wtf的基本瞭解
Flask-WTF是集成WTForms,並帶有 csrf 令牌的安全表單和全局的 csrf 保護的功能。
每次我們在建立表單所創建的類都是繼承與flask_wtf中的FlaskForm,而FlaskForm是繼承WTForms中forms。
官方文檔如下:
flask-wtf
① 用法
- 創建基礎表單
label可以設置字段屬性爲中文名字 使用時直接用.label
name = wtforms.StringField(label="任務的名字")
② flask-wtf中的csrf(任何使用FlaskForm創建的表單發送請求,都會有CSRF的全部保護)
- CSRF保護
任何使用FlaskForm創建的表單發送請求,都會有CSRF的全部保護,在對應的template中HTML渲染表單時,可以加入form.csrf_token:
但是如果模板中沒有表單,則可以使用一個隱藏的input標籤加入csrf_token。
- 在視圖中處理驗證請求
使用validate_on_submit 來檢查是否是一個 POST 請求並且請求是否有效。
flask表單默認攜帶csrf_token
③ flask-wtf中提供的FileField實現文件上傳
Flask-WTF 提供 FileField 來處理文件上傳,它在表單提交後,自動從 flask.request.files 中抽取數據。FileField 的 data 屬性是一個 Werkzeug FileStorage 實例。
注意:在 HTML 表單的 enctype 設置成 multipart/form-data,如下:
④ 驗證碼
Flask-WTF 通過 RecaptchaField 也提供對驗證碼的支持:
還需要配置一下信息:
2. WTForms 基本瞭解
WTForms是一個Flask集成的框架,或者是說庫。用於處理瀏覽器表單提交的數據。它在Flask-WTF 的基礎上擴展並添加了一些隨手即得的精巧的幫助函數,這些函數將會使在 Flask 裏使用表單更加有趣。
官方文檔如下:
WTForms
① 字段類型
WTForms支持HTML字段:
② Validators驗證器
WTForms可以支持很多表單的驗證函數:
③ 自定義Validators驗證器
-
第一種: in-line validator(內聯驗證器)
也就是自定義一個驗證函數,在定義表單類的時候,在對應的字段中加入該函數進行認證。下面的my_length_check函數就是用於判name字段長度不能超過50.
-
第二種:通用且可重用的驗證函數
一般是以validate開頭,加上下劃線再加上對應的field字段(validate_filed),瀏覽器在提交表單數據時,會自動識別對應字段所有的驗證器,然後執行驗證器進行判斷。
-
第三種:比較高級的validators
④ Widget組件
下面可以以登錄界面爲實例:
總結
flask表單大都是使用Flask-WTF與WTForms來進行實現,比如說做一下簡單的系統登錄界面、註冊界面等等