flask中的flask-wtf插件以及flask集成框架WTForms

一、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來進行實現,比如說做一下簡單的系統登錄界面、註冊界面等等


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章