基本处理
之前提到的请求上下文中的request.form
可以获得POST请求中提交表单数据,一个个去处理显然很繁琐,这时可以用Flask-WTF来让一切变得更加简单,它集成了WTForms,安装如下:
pip install flask-wtf
设置密钥
为了防止恶意网站的CSRF攻击,Flask-WTF用一个密钥生成加密令牌,再用令牌验证数据的真伪,我们把这个密钥放在app.config
字典中,这里面存储了一些框架的配置变量,还支持导入配置值(一般密钥是保存在环境变量里的),代码如下:
# demo.py
...
app = Flask(__name__)
app.config['SECRET_KEY'] = 'some secret string'
...
使用表单类
在这个拓展中每个表单都由一个继承Form
的类,里面的每个字段都定义为类变量,还可以附属验证函数,如下:
from flask_wtf import Form
from wtforms import StringField, SubmitField
from wtforms.validators import Required
class NameForm(Form):
name = StringField('你的名字:', validators=[Required()]) # validator为验证函数组成的列表
submit = SubmitField('Go')
WTForms支持的HTML标准字段:
字段类型 | 说 明 |
---|---|
StringField | 文本字段 |
TextAreaField | 多行文本字段 |
PasswordField | 密码文本字段 |
HiddenField | 隐藏文本字段 |
DateField | 文本字段,值为datetime.date格式 |
DateTimeField | 文本字段,值为datetime.datetime格式 |
IntegerField | 文本字段,值为整数 |
DecimalField | 文本字段,值为decimal.Decimal |
FloatFiled | 文本字段,值为浮点数 |
BooleanField | 复选框,值为True和False |
RadioField | 一组单选框 |
SelectField | 下拉列表 |
SelectMultipleField | 下拉列表,可选择多个值 |
FileField | 文件上传字段 |
SubmitField | 表单提交按钮 |
FormField | 把表单作为字段嵌入另一表单 |
FieldList | 一组指定类型的字段 |
WTForms验证函数:
验证函数 | 说 明 |
---|---|
验证电 |