文章目录
一、flask中的flask-wtf插件以及flask集成框架WTForms
1. flask-wtf的基本了解
Flask-WTF是集成WTForms,并带有 csrf 令牌的安全表单和全局的 csrf 保护的功能。
每次我们在建立表单所创建的类都是继承与flask_wtf中的FlaskForm,而FlaskForm是继承WTForms中forms。
官方文档如下:
flask-wtf
① 用法
- 创建基础表单
label可以设置字段属性为中文名字 使用时直接用.label
name = wtforms.StringField(label="任务的名字")
② flask-wtf中的csrf(任何使用FlaskForm创建的表单发送请求,都会有CSRF的全部保护)
- CSRF保护
任何使用FlaskForm创建的表单发送请求,都会有CSRF的全部保护,在对应的template中HTML渲染表单时,可以加入form.csrf_token:
但是如果模板中没有表单,则可以使用一个隐藏的input标签加入csrf_token。
- 在视图中处理验证请求
使用validate_on_submit 来检查是否是一个 POST 请求并且请求是否有效。
flask表单默认携带csrf_token
③ flask-wtf中提供的FileField实现文件上传
Flask-WTF 提供 FileField 来处理文件上传,它在表单提交后,自动从 flask.request.files 中抽取数据。FileField 的 data 属性是一个 Werkzeug FileStorage 实例。
注意:在 HTML 表单的 enctype 设置成 multipart/form-data,如下:
④ 验证码
Flask-WTF 通过 RecaptchaField 也提供对验证码的支持:
还需要配置一下信息:
2. WTForms 基本了解
WTForms是一个Flask集成的框架,或者是说库。用于处理浏览器表单提交的数据。它在Flask-WTF 的基础上扩展并添加了一些随手即得的精巧的帮助函数,这些函数将会使在 Flask 里使用表单更加有趣。
官方文档如下:
WTForms
① 字段类型
WTForms支持HTML字段:
② Validators验证器
WTForms可以支持很多表单的验证函数:
③ 自定义Validators验证器
-
第一种: in-line validator(内联验证器)
也就是自定义一个验证函数,在定义表单类的时候,在对应的字段中加入该函数进行认证。下面的my_length_check函数就是用于判name字段长度不能超过50.
-
第二种:通用且可重用的验证函数
一般是以validate开头,加上下划线再加上对应的field字段(validate_filed),浏览器在提交表单数据时,会自动识别对应字段所有的验证器,然后执行验证器进行判断。
-
第三种:比较高级的validators
④ Widget组件
下面可以以登录界面为实例:
总结
flask表单大都是使用Flask-WTF与WTForms来进行实现,比如说做一下简单的系统登录界面、注册界面等等