第2章中介绍的 请求对象 包含客户端发出的所有请求信息。
其中, request.form 能获取 POST请求 中提交的表单数据。
尽管Flask的请求对象提供的信息足够用于处理Web表单,但有些任务很单调,而且要重复操作。
比如,生成表单的HTML代码和验证提交的表单数据。
Flask-WTF(https://flask-wtf.readthedocs.io/en/stable/)扩展可以把处理Web表单的过程变成一种愉悦的体验。
这个扩展对独立的WTForms(https://wtforms.readthedocs.io/en/stable/)包进行了包装,方便集成到Flask程序中。
Flask_WTF 及其依赖可以使用pip安装:
pip install flask-wtf
4.1 跨站请求伪造保护
默认情况下,Flask-WTF能保护所有表单免受跨站请求伪造(Cross-Site Request Forgery)的攻击。
恶意网站把请求发送到被攻击者已登录的其他网站时就会引发CSRF攻击。
为了实现CSRF保护,Flask-WTF需要在程序设置一个密钥。
Flask-WTF 使用这个密钥生成加密令牌,再用令牌验证请求中表单数据的真伪。
Flask-WTF 设置密钥的方法如示例4-1
示例 4-1 hello.py:设置Flask-WTF
app = Flask(__name__)
app.config["SECRET_KEY"] = "hard to guess string"
app.config 字典用来存储框架、扩展和程序本身的配置变量。
使用标准字典句法就能把配置值添加到