2024年04月18日 Python51
Flask-wtf是一个用于表单处理、校验并提供csrf验证的功能的扩展库。
扩展Flask-WTF继承了WTFforms,使用它可以在flask中更方便的使用WTForms。Flask-WTF将表单数据解析、CSRF保护、文件上传等功能与Flask集成。
flask-wtf默认为每个表单启用CSRF保护,它为我们自动生成和验证CSRF令牌。默认情况下,fflask-wtf使用程序秘钥来对CSRF令牌进行签名(token),所以我们需要为程序设置秘钥:
app.secret_key = ‘secret string’
定义WTForms表单来
使用WTForms创建表单时,表单由python类表示,这个类继承从STForms导入的Form类。一个表单由若干个输入字段组成,这些字段分别用表单类的类属性来表示(字段即field,可以简单理解为表单内的输入框、按钮等部件),下面定义了一个LoginForm类,最终会生成像之前定义的HTML表单:
flask-wtf必要性
避免重复操作, 表单操作很多,防止表单遭遇跨站请求伪造(csrf===cross-site request forgery)。
为什么使用Flask-WTF?
request对象公开了所有客户端发送的请求信息。特别是request.form可以访问POST请求提交的表单数据。
尽管Flask的request对象提供的支持足以处理web表单,但依然有许多任务会变得单调且重复。
表单的HTML代码生成和验证提交的表单数据就是两个很好的例子。
优势:
Flask-WTF扩展使得处理web表单能获得更愉快的体验。该扩展是一个封装了与框架无关的WTForms包的Flask集成。
flask-wtf的使用流程
编写forms.py文件, 定义一个关于表单的类;(***注意: 一定要有提交的按钮);
业务逻辑文件app.py中,
实例化表单类; form = RegisterForm(),
验证表单内容是否提交成功? form.validate_on_submit(),
获取表单里面的内容(两种方法),
通过request对象获取: request.form['key值'],
通过form对象获取: form.key值.data,
表现逻辑文件wtf.html中,
导入wtf模块: {% import "bootstrap/wtf.html" as wtf %},
自动生成表单对应的html: {{ wtf.quick_form(form) }}。
本文链接:http://so.lmcjl.com/news/2467/