flask-wtf
- 避免重复操作,表单操作很多;
- 防止表单遭遇跨站请求伪造(csrf ==== cross-site request forgery);
csrf 跨站请求伪造流程图:
1.为什么使用Flask-WTF?
request 对象公开了所有客户端发送的请求信息。特别是 request.form 可以访问POST 请求提交的表单数据。尽管 Flask 的 request 对象提供的支持足以处理 web表单,但依然有许多任务会变得单调且重复。表单的 HTML 代码生成和验证提交的表单数据就是两个很好的例子。
优势: Flask-WTF 扩展使得处理 web 表单能获得更愉快的体验。该扩展是一个封装了与框架无关的 WTForms 包的 Flask 集成。
2.什么是表单处理?
在网页中,为了和用户进行信息交互总是不得不出现一些表单。flask 设计了WTForm 表单库来使flask可以更加简便地管理操作表单数据。
WTForm中最重要的几个概念如下:
-
Form类,开发者自定义的表单必须继承自Form类或者其子类。
Form类最主要的功能是通过其所包含的Field类提供对表单内数据的快捷访问方式。 -
各种Field类,即字段。
一般而言每个Field类都对应一个input的HTML标签。比如WTForm自带的一些Field类,比如BooleanField就对应<input type=“checkbox”>, SubmitField就对应<input type=“submit”>等等。 -
Validator类。
这个类用于验证用户输入的数据的合法性。比如Length验证器可以用于验证输入数据的长度,FileAllowed 验证上传文件的类型等等。
另外,flask为了防范csfr(cross-site request forgery)攻击, 默认在使用flask-wtf之前要求app一定要设置过secret_key。
最简单地可以通过 app.config[‘SECRET_KEY’] = ‘xxxx’ 来配置。
3.常见的Field类
Field类 | 说明 |
---|---|
PasswordField | 密码字段,自动将输入转化为小黑点 |
DateField | 文本字段,格式要求为 datetime.date 一样 |
IntergerField | 文本字段,格式要求是整数 |