Flask - wtform的使用

wtform和flask-wtf的区别

  • flask-wtc : 集成了wtform, csrf的保护和文件上传功能, 图形验证码

flask-wtf文档

  • https://flask-wtf.readthedocs.io/en/stable/

安装flask-wtf

  • pip install Flask-WTF

使用flask-wtf

  • 定义form表单类
    • 定义form.py
from flask_wtf import FlaskForm
from wtforms import StringField
from wtforms.validators import DataRequired, Length


class UserForm(FlaskForm):
    # StringField表示是一个字符串. 对应表单项, 比如用户名
    # StringField对应一个文本框
    # validators检查数据是不是为空
    # DataRequired表示必填
    # 还有其他的限制 : 比如长度Length, 需要指定一个范围
    name = StringField('name', validators=[DataRequired(), Length()])

Length()

  • def __init__(self, min=-1, max=-1, message=None):
    • min : 最小长度
    • max : 最大长度
    • message : 提示消息

在前端使用flask-wtform

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户页面</title>
</head>
<body>
    <form method="POST" action="/">
        {{ uform.name }}
        {{ uform.password }}
        <input type="submit" value="Go">
    </form>
</body>
</html>

需要设置一个secret_key

app.config['SECRET_KEY'] = 'asdfghjkl'

CSRF是什么

  • CSRF(Cross-site request forgery),中文名称:跨站请求伪造
  • 可以这么理解CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求。

CSRF Protection

  • 只要使用了FlaskForm, 它都会获取一个CSRF的保护
  • CSRF保护需要一个密钥来安全地对令牌进行签名。默认情况下,这将使用Flask应用程序的SECRET_KEY

防止CSRF攻击

  • 一次表单的请求会产生一个唯一的代码, 当提交的时候, 会随着数据一起提交到服务器, 服务器会验证两个值, 一个是唯一的代码, 另一个是cookie
  • 在前端添加 : {{ uform.csrf_token }}

全局使用csrf保护

csrf = CSRFProtect(app=app)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值