zoukankan      html  css  js  c++  java
  • WTF表单验证

    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>

    运行截图:

     

  • 相关阅读:
    javaIO流之 字节与字符流认识
    Servlet容器理解(生命周期、servletContext作用域、servlet装载方式)
    是否改变原数组的常用方法
    时间空间复杂度的初步理解---后续补充
    java集合框架之 Set
    【原】SQLPLUS支持上下翻页
    【转】shell脚本写的俄罗斯方块游戏
    【原】Oracle 11.2.0.1 64bit for RHEL6.0 Server x86_64 静默安装
    【原】RHEL6.0企业版安装
    【原】记录一句话
  • 原文地址:https://www.cnblogs.com/zyj3955/p/15370334.html
Copyright © 2011-2022 走看看