zyj3955

WTF表单验证可分为3个步骤:

①导入wtf扩展提供的表单验证器。(from wtforms.validators import DataRequired,EqualTo)

②定义表单类

# 定义表单类
class RegisterForm(FlaskForm):
    username =StringField(\'账号:\',validators=[DataRequired()])
    password =PasswordField(\'密码:\',validators=[DataRequired()])
    password2 = PasswordField(\'确认密码:\',validators=[DataRequired(),EqualTo(\'password\',\'两次密码不一致\')])
    submit=SubmitField(\'提交\')

③验证逻辑(判断请求方式——>请求参数——>验证)

redist_form=RegisterForm()

    if request.method==\'POST\':
        username=request.form.get(\'username\')
        password = request.form.get(\'password\')
        password2 = request.form.get(\'password2\')
        if redist_form.validate_on_submit():
            print(username,password)
            return \'success\'
        else:
            flash(\'参数有误\')
    return render_template(\'registform.html\',form=redist_form)

完整代码:

app.py

from flask import Flask,render_template,request,flash
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField,SubmitField
from wtforms.validators import EqualTo,DataRequired
app = Flask(__name__)
app.secret_key=\'yingjie\'

# 定义表单类
class RegisterForm(FlaskForm):
    username =StringField(\'账号:\',validators=[DataRequired()])
    password =PasswordField(\'密码:\',validators=[DataRequired()])
    password2 = PasswordField(\'确认密码:\',validators=[DataRequired(),EqualTo(\'password\',\'两次密码不一致\')])
    submit=SubmitField(\'提交\')

@app.route(\'/regist\',methods=[\'GET\',\'POST\'])
def regist_form():
    redist_form=RegisterForm()

    if request.method==\'POST\':
        username=request.form.get(\'username\')
        password = request.form.get(\'password\')
        password2 = request.form.get(\'password2\')
        if redist_form.validate_on_submit():
            print(username,password)
            return \'success\'
        else:
            flash(\'参数有误\')
    return render_template(\'registform.html\',form=redist_form)

if __name__ == \'__main__\':
    app.run()

registform.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form method="post">
        {{ form.csrf_token() }}
        {{ form.username.label }}{{ form.username }}<br>
        {{ form.password.label }}{{ form.password }}<br>
        {{ form.password2.label }}{{ form.password2 }}<br>
        {{ form.submit }}
    </form>
{% for message in get_flashed_messages() %}
        {{ message }}
{% endfor %}
</body>
</html>

运行截图:

 

 

 

 

分类:

技术点:

相关文章: