1. 程式人生 > >flask的flask-wtf表單

flask的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 確保輸入值不在可選值列表中