flask中的flask-wtf插件以及flask集成框架WTForms

一、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来进行实现,比如说做一下简单的系统登录界面、注册界面等等


发布了107 篇原创文章 · 获赞 43 · 访问量 6161

猜你喜欢

转载自blog.csdn.net/langdei/article/details/102595371
今日推荐