flask-wtf 詳解

一、安裝pip install flask-wtf

二、創建一個flask的項目引入相對應的包

from flask import Flask,render_template
import flask
#引入模塊
from flask_wtf import FlaskForm,CsrfProtect
#如果輸入的是字符串那麼就用StringField,如果是整數那麼就用IntegerField
from wtforms import StringField,IntegerField
#驗證方式
from wtforms.validators import Length,EqualTo,InputRequired
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

三、配置文件

#coding:utf8
import os
SECRET_KEY = os.urandom(24)
  • 1
  • 2
  • 3

四、配置

import config
app = Flask(__name__)
app.debug = True
app.config.from_object(config)
CsrfProtect(app)
  • 1
  • 2
  • 3
  • 4
  • 5

五、創建一個驗證的類

class RegistForm(FlaskForm):
    username = StringField(validators=[Length(min=3,max=10,message=u"用戶名長度有問題")])
    password = StringField(validators=[Length(min=6,max=20)])
    age = IntegerField(validators=[InputRequired()])
  • 1
  • 2
  • 3
  • 4

六、在路由代碼中使用

@app.route('/',methods=["GET","POST"])
def index():
    if flask.request.method == "GET":
        return render_template("index.html")
    else:
        form = RegistForm(flask.request.form)
        if form.validate():
            username = form.username.data
            password =form.password.data
            print username,password
            return u"登錄成功"
        else:
            print form.errors
            return u"錯誤"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

注意點:創建的驗證類的字段要和前端html模板頁面的name值的一樣的

七、WTForms支持的HTML標準字段

字段類型      說  明
StringField 文本字段
TextAreaField 多行文本字段
PasswordField 密碼文本字段
HiddenField 隱藏文本字段
DateField 文本字段,值爲 datetime.date 格式
DateTimeField 文本字段,值爲 datetime.datetime 格式
IntegerField 文本字段,值爲整數
DecimalField 文本字段,值爲 decimal.Decimal
FloatField 文本字段,值爲浮點數
BooleanField 複選框,值爲 TrueFalse
RadioField 一組單選框
SelectField 下拉列表
SelectMultipleField 下拉列表,可選擇多個值
FileField 文件上傳字段
SubmitField 表單提交按鈕
FormField 把表單作爲字段嵌入另一個表單
FieldList 一組指定類型的字段
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

八、常見的驗證函數

驗證函數 說  明
Email 驗證電子郵件地址
EqualTo 比較兩個字段的值;常用於要求輸入兩次密碼進行確認的情況
IPAddress 驗證 IPv4 網絡地址
Length 驗證輸入字符串的長度
NumberRange 驗證輸入的值在數字範圍內
Optional 無輸入值時跳過其他驗證函數
Required 確保字段中有數據
Regexp 使用正則表達式驗證輸入值
URL 驗證 URL
AnyOf 確保輸入值在可選值列表中
NoneOf 確保輸入值不在可選值列表中
發佈了22 篇原創文章 · 獲贊 8 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章