Flask-WTF表单

Web表单与Flask-WTF拓展
  • web表单
    • 它是HTML页面中负责数据采集的部件。表单有三个部分组成:表单标签、表单域、表单按钮。表单允许用户输入数据,负责HTML页面数据采集,通过表单将用户输入的数据提交给服务器。
  • Flask-WTF拓展
    • Flask-WTF是一个Html表单的拓展,可以使用python代码写表单,然后传递到模板中渲染
    • Flask-WTF扩展封装了WTForms,有验证表单数据的功能;
FORM表单提交的实现
  • 通过HTML页面实现表单提交和验证
    • 在HTML中实现表单页面
    • 定义路由和视图函数,接收表单提交的数据进行验证
      • GET请求获取表单,POST请求提交表单
  • 通过Flask-WTF实现表单的提交和验证
    • 导入FlaskForm表单、标准字段、calidators验证器
      • from flask-wtf import FlaskForm
      • from wtforms import  标准字段
      • from wtforms.validators import 验证器
      • 所有的标准字段和验证器示例:
        • 标准字段
        • WTForms常用验证器
    • 设置SECRET_KEY
      • 因为FlaskForm会自动的进行csrf的验证,生成csrf密文会使用到SECRET_KEY
      • 过程中会使用的用flash() 记录表单验证错误信息,flash会用到session,所以会用到SECRET_KEY
        • app.secret_key = "***"
    • 自定义表单类
    • 定义路由和视图函数
      • GET请求:创建表单实例,将其传递给HTMl模板进行渲染
      • POST请求:创建表单实例,FlaskForm实例会对表单的提交结果进行验证,如果验证通过,返回成功内容
    • 定义HTMl页面
      • 接收视图函数传递过来的表单对象,并获取其属性将其渲染到标签中
      • 因为FlaskForm会自动的进行csrf的验证,所以我们要设置一个csrf_token标签

csrf_token 验证的设置
  • csrf_token设置
    • 1.
    • 2.要首先配置SECRET_KEY
    • 3.在创建了表单类的时候,是默认配置了csrf_token的,但是在未使用表单类的时候,需要手动开启csrf验证
  • csrf_token验证
    • 在响应在中给cookie添加csrf_token  (在使用表单的时候默认添加,不使用表单手动添加)
      • 生成csrf_token
        • from flask_wtf.csrf import generate_csrf
        • token = generate_csrf()
        • response.set_cookie('csrf_token', token)
      • 在前端的请求给headers添加csrf_token参数

刘小恺(Kyle) wechat
如有疑问可联系博主