4.2 表单类

使用 Flask-WTF 时,在服务器端,每个 Web 表单都由一个继承自 FlaskForm 的类表示。

这个类定义表单中的一组字段,每个字段都用对象表示。字段对象可附属一个或多个验证函数。验证函数用于验证用户提交的数据是否有效。

示例 4-2 是一个简单的 Web 表单,包含一个文本字段和一个提交按钮。

示例 4-2 hello.py:定义表单类

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')

这个表单中的字段都定义为类变量,而各个类变量的值是相应字段类型的对象。在这个示例中,NameForm 表单中有一个名为 name 的文本字段和一个名为 submit 的提交按钮。

StringField 类表示属性为 type="text" 的 HTML <input> 元素。

SubmitField 类表示属性 为 type="submit" 的 HTML <input> 元素。

字段构造函数的第一个参数是把表单渲染成 HTML 时使用的标注(label)。

StringField 构造函数中的可选参数 validators 指定一个由验证函数组成的列表,在接受用户提交的数据之前验证数据。验证函数 DataRequired() 确保提交的字段内容不为空。

  • FlaskForm 基类由 Flask-WTF 扩展定义,所以要从 flask_wtf 中导入。然而, 字段和验证函数却是直接从 WTForms 包中导入的。

表4-1:WTForms支持的HTML标准字段

字段类型 说明
BooleanField 复选框,值为 True 和 False
DateField 文本字段,值为 datetime.date 格式
DateTimeField 文本字段,值为 datetime.datetime 格式
DecimalField 文本字段,值为 decimal.Decimal
FileField 文件上传字段
HiddenField 隐藏的文本字段
MultipleFileField 多文件上传字段
FieldList 一组指定类型的字段
FloatField 文本字段,值为浮点数
FormField 把一个表单作为字段嵌入另一个表单
IntegerField 文本字段,值为整数
PasswordField 密码文本字段
RadioField 一组单选按钮
SelectField 下拉列表
SelectMultipleField 下拉列表,可选择多个值
SubmitField 表单提交按钮
StringField 文本字段
TextAreaField 多行文本字段

WTForms 内建的验证函数如表 4-2 所示。

表4-2:WTForms验证函数

验证函数 说明
DataRequired 确保转换类型后字段中有数据
Email 验证电子邮件地址
EqualTo 比较两个字段的值;常用于要求输入两次密码进行确认的情况
InputRequired 确保转换类型前字段中有数据
IPAddress 验证 IPv4 网络地址
Length 验证输入字符串的长度
MacAddress 验证 MAC 地址
NumberRange 验证输入的值在数字范围之内
Optional 允许字段中没有输入,将跳过其他验证函数
Regexp 使用正则表达式验证输入值
URL 验证 URL
UUID 验证 UUID
AnyOf 确保输入值在一组可能的值中
NoneOf 确保输入值不在一组可能的值中

《基于Python的Web应用开发实战(第二版)》

posted @ 2019-01-07 15:00  °❆黄雷❄°  阅读(145)  评论(0编辑  收藏  举报