request.form
获取POST请求中提交的表单数据
Flask 请求的对象提供的信息足够用于处理web表单,但是人物单调,重复
例如:生成表单的HTML代码和验证提交的表单数据
Flask-WFT
将处理web表单的过程变得比较有趣
安装:
pip install flask-wtf
功能:
flask-wtf可以保护表单免受 跨站请求伪造(CSRF)的攻击
恶意网站将请求发送到被攻击者已登录的其他网站时就会引发CSRF
实现CSRF保护
程序需要设置秘钥,falsk-wtf使用秘钥生成加密令牌,用加密令牌验证请求中表单数据的真伪
设置秘钥
设置flask-wtf
app = Flask(__name__)
app.config['SECRET_KEY'] = 'hard to guess string'
app.config
字典
用于存储框架、扩展、和程序本身
的配置变量
将配置值添加到app.config对象中
还可以从文件或者环境中导入配置值
SECRET_KEY
配置变量是通用密钥,不同的程序使用不同的密钥,保证其他人不知道你所用的密钥
表单类
每个表单都由继承自Form的类表示
Form类中定义了表单中的一组字段,每个字段用对象表示
字段对象附属多个验证函数
验证函数:
用来验证用户提交的输入值是否符合要求
简单的web表单
from flask.ext.wtf import Form
from wtforms import StringField,SubmitField
from wtforms.validators import Required
class NameForm(Form):
name = StringField('what's is your name?',validators = [Required()])
submit = SubmitField('submit')
表单中的字段都定义为类变量
类变量的值是对应字段类型的对象
上边的列子中有一个名为name(类变量)
的文本字段(类变量的值)
和一个名为submit的提交按钮
StringField类
表示属性为type = 'text'
的<input>
元素
SubmitField类
表示属性为type='submit'
的 <input>
元素
字段构造函数
name = StringField('what's is your na