Flask-WTF 扩展可以把处理 Web 表单,这个扩展对独立的
WTForms 包进行了包装,方便集成到Flask应用中。
1. 配置
与其他多数扩展不同,Flask-WTF 无须在应用层初始化,但是它要求应用配置一个密钥。密钥是一个由随机字符构成的唯一字符串,通过加密或签名以不同的方式提升应用的安全性。Flask 使用这个密钥保护用户会话,以防被篡改。
配置 Flask-WTF:
app = Flask(_name_)
app.config['SECRET_KEY'] = 'hard to guess string'
2. 表单类
使用 Flask-WTF 时,在服务器端,每个 Web 表单都由一个继承自 FlaskForm 的类表示。这个类定义表单中的一个字段,每个字段都用对象表示。字段对象可附属一个或多个验证函数。
验证函数用于验证用户提交的数据是否有效。
定义表单类:
from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired
class NameForm(FlaskForm):
name = StringField('What is your name?', validators=[DataRequired()])
submit = SubmitField('Submit')
验证函数 DataRequired() 确保提交的字段内容不为空。
WTForms支持的HTML标准字段:
| 字段类型 | 说明 |
|---|---|
| BooleanField | 复选框,值为 True 和 False |
| DateField | 文本字段,值为 datetime.data 格式 |
| DateTimeField | 文本字段,值为 datetime.datetime 格式 |
| DecimalField | 文本字段,值为 decimal.Decimal |
| FileField | 文件上传字段 |
| HiddenField | 隐藏的文本字段 |
| MultipleField | 多文件上传字段 |
| FieldList | 一组指定类型的字段 |
| FloatField | 文本字段,值为浮点数 |
| FormField | 把一个表单作为字段嵌入另一个表单 |
| IntegerField | 文本字段,值为整数 |
| PasswordField | 密码文本字段 |
| RadioField | 一组单选按钮 |
| SelectField | 下拉列表 |
| SelectMultipleField | 下拉列表,可选择多个值 |
| SubmitField | 表单提交按钮 |
| StringField | 文本字段 |
| TextAreaField | 多行文本字段 |
WTForms验证函数:
| 验证函数 | 说明 |
|---|---|
| DataRequired | 确保转换类型后字段中有数据 |
| 验证电子邮件地址 | |
| EqulTo | 比较两个字段的值;常用于要求输入两次密码进行确认的情况 |
| InputRequired | 确保转换类型前字段中有数据 |
| IPAddress | 验证 IPv4 网络地址 |
| Length | 验证输入字符串的长度 |
| MacAddress | 验证 MAC 地址 |
| NumberRange | 验证输入的值在数字范围之内 |
| Optional | 允许字段中没有输入,将跳过其他验证函数 |
| Regexp | 使用正则表达式验证输入值 |
| URL | 验证 URL |
| UUID | 验证 UUID |
| AnyOf | 确保输入值在一组可能的值中 |
| NoneOf | 确保输入值不在一组可能的值中 |










