python全栈029-----WTForms表单验证

本文介绍了如何使用WTForms库在Flask应用中进行表单验证,通过创建forms.py文件集中处理验证规则,如设置字段的最小值、最大值,并自定义错误消息,以此简化视图函数中的复杂逻辑。
摘要由CSDN通过智能技术生成

WTForms表单验证

flask-WTF

  • 为了方便演示我们创建一个py文件
from flask import Flask,request,render_template

app = Flask(__name__)

@app.route('/')
def index():
    return '首页'

@app.route('/regist/',methods = ['GET','POST'])
def regist():
    if request.method == 'GET':
        return render_template('regist.html')
    else:
        username = request.form.get('username')
        password = request.form.get('password')
        password_verify = request.form.get('password_verify')
        if len(username)<3 or len(username)>10:
            return '用户名长度不正确'
        if password != password_verify:
            return '两次密码不一致'
        if len(password)<3 or len(password)>10:
            return  '密码长度不正确'

if __name__ =='__main__':
    app.run(debug=True,port=8888)
  • 和regist.html文件
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="" method="post"></form>
    用户名:<input type="text" name="username"><br>
    密码:<input type="text" name="password"><br>
    确认密码:<input type="text" name="password_verify"><br>
    <input type="submit" value="注册">
</body>
</html>
  • 可以看到我们上面要对我们注册的用户进行判断非常麻烦
  • 所以我们使用flask-wtf库
  • 首先需要安装库,安装之后
  • 创建一个新的forms.py文件,直接在其中进行判断,min最小值,max最大值,不满足前两个输出message的值
from wtforms import Form,StringField
from wtforms.validators import Length,EqualTo

# 表单验证
class RegistFrom(Form):
    username = StringField(validators=[Length(min=3,max=10,message='用户名长度不正确')])
    password = StringField(validators=[Length(min=3,max=10,message='密码长度不正确')])
    password_verify = StringField(validators=[EqualTo('password',message='两次密码不一致')])
  • 我们视图函数文件中应该改为这样
from flask import Flask,request,render_template
from forms import RegistFrom
app = Flask(__name__)

@app.route('/')
def index():
    return '首页'

@app.route('/regist/',methods = ['GET','POST'])
def regist():
    if request.method == 'GET':
        return render_template('regist.html')
    else:
        form = RegistFrom(request.form)
        if form.validate():
            return '注册成功'
        else:
            print(form.errors)
            return '注册失败'

if __name__ =='__main__':
    app.run(debug=True,port=8888)
  • 如果有需要进行验证的直接在forms.py进行添加即可
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值