flask的flask-wtf表單
阿新 • • 發佈:2018-11-07
一、安裝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 複選框,值為 True 和 False
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 確保輸入值不在可選值列表中