Python学习笔记:6.3.10 flask-wtf数据验证

简介:讲解了flask-wtf的表单数据接收、内置数据验证器、错误消息提示和如何自定义验证器等内容。
摘要由CSDN通过智能技术生成

前言:本文是学习网易微专业的《python全栈工程师 - Flask高级建站》课程的笔记,欢迎学习交流。同时感谢老师们的精彩传授!

一、课程目标
  • 表单数据接收
  • 内置数据验证器
  • 错误消息
  • 自定义验证器
二、详情解读
2.1.表单数据接收
2.1.1.数据接收

通过form表单提交的数据可以使用form.data接收

form = LoginForm()
username = form.data['username']

form.data会对表单提交的数据进行验证,数据转换

如果有一个表单字段是Integer类型,比如score,那么:

score = form.data['score']

相当于:

if "score" in request.form:
	score = int(request.form['score'])
else:
	score = 0

实操:
step:修改app.py文件中的login()视图函数:

.
.
.
@app.route('/login', methods=['get', 'post'])
def login():
# 新增
    form = LoginForm()
    message = None
    if request.method == "POST":
        # 用户名和密码的数据接收用下面这两行代替
        username = form.data['username']
        password = form.data['password']
        user = User.query.filter_by(username=username).first()
        if user and user.validate_password(password):
            session['user'] = user.username
            # 登录成功返回首页
            return redirect(url_for("index"))
        else:
            message = "用户名与密码不匹配"
    return render_template("login.html", message = message,
                           form=form
                           )
.
.
.                   
2.2.数据验证器
2.2.1.数据验证的必要性

为什么要进行验证?
1.用户填写的时候不了解数据要求
2.别有用心的用户不择手段危害网站
验证手段:
1.前端验证,改进用户体验
2.后端验证,提升网站安全性
由于前端的任何验证都可以被忽略,所以永远不要相信前端提交来的数据是安全的。

2.2.2.flask-wtf提供的数据验证
验证器 说明
InputRequire(message) 必填字段
Length(min, max, message) 输入长度范围
NumberRange(min, max, message) 输入数值范围
Regexp(regex, flags, message) 正则表达式验证
Url(message) 输入字符串为合法的网址结构
Email(message) 输入必须为邮件地址
EqualTo(fieldname, message) 必须与fieldname的值一致
DateRequired(message) 输入有效性
FileRequired(message) 必须是文件
AnyOf(values, message) 输入值必须在values列表中
NoneOf(values, message) 输入值不在values列表中

实操:
修改forms/account_form.py文件中的LoginForm()为以下代码:

from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField, SelectMultipleField, \
    widgets, RadioField, TextAreaField,SelectField

from flask_ckeditor import CKEditorField
# 引入DataRequired模块
from wtforms.validators import DataRequired

class LoginForm(FlaskForm):
	# 用户名和密码新增validtors验证器
    username = StringField('用户名',
                           validators=[DataRequired(message="必须填写用户名")],
                           render_kw={
   "class": "form-control", "placeholder": "输入用户名"})
    password = PasswordField('密码',
                           validators=[DataRequired(message="必须填写密码")],
                           render_kw={
   "class": "form-control", "placeholder": "输入密码"})
    # 多选框选项
    choices = [(1, "一周免登录"), (2, "二周免登录"), (3, "三周免登录")]
    remember = CheckBoxField('记忆方式', choices=choices)
    sex_choices = [(1, '女'), (2, '男')]
    sex = RadioField('性别', choices=sex_choices)
    # 这里第一个参数为空,因为登录按钮不用显示label的值
    submit = SubmitField('', render_kw
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值