Python day43_Flask入门

作者: g_s_007 | 来源:发表于2018-07-08 22:39 被阅读0次

    使用 Flask-WTF 实现表单

      1. 导入wtf扩展的表单类,导入自定义表单需要的字段,导入wtf扩展提供的表单验证器
      1. 自定义表单类 文本字段 密码字段 提交按钮
      1. 创建表单类, 传入模板
      1. 模板中使用变量代码块来显示
      1. 一旦调用 会去自定义类中寻找当初定义的验证器 一次性全部执行

    代码 用于表单验证:

    #python部分:
    
    from flask import Flask,render_template
    from flask import flash
    from flask import request
    from flask_wtf import FlaskForm
    from wtforms import SubmitField,StringField,PasswordField
    from wtforms.validators import DataRequired,EqualTo
    
    app = Flask(__name__)
    # 关闭CSRF 表单验证
    app.config['WTF_CSRF_ENABLED'] = False
    app.secret_key = 'zhangsan'
    # 自定义表单类(表单样式 和验证逻辑)
    class registerForm(FlaskForm):
    # < label > 用户名: < / label > < input type = "text" name = "username" placeholder = "请输入用户名" > < br / >
    # StringField :文本框 看Field类
    # 传值:第一个是label 值, 第二个是验证器 render_kw 就是一个提示信息
    # validators=[DataRequired()] :只要写入这个 就说明(验证) 文本框输入内容不能为空
    username = StringField('用户名:',validators=[DataRequired()],render_kw={'placeholder':'请输入用户名'})
    password = PasswordField('密码:',validators=[DataRequired()],render_kw={'placeholder':'请输入密码'})
    # EqualTo(password, '两次密码不一致'): 增加了另一个验证器, 第一个参数 是要对比的文本框, 第二个参数 对比失败时的提示
    password2 = PasswordField('确认密码:',validators=[DataRequired(),EqualTo('password','两次密码不一致')],render_kw={'placeholder':'请输入确认密码'})
    submit = SubmitField('注册')
    
    # 创建表单类传入模板
    @app.route('/wtf_form',methods=['GET','POST'])
    def wtf_form():
    # 创建模板
    register_form = registerForm()
    # 模板中使用变量代码块来显示
    # 验证
    if request.method =='POST':
    # validate_on_submit: 在提交时执行验证逻辑(此时的逻辑,在自定义的类中)
    if register_form.validate_on_submit():
    # 如果能进入这里, 说明所有的验证全部通过
    return 'success'
    else:
    flash('参数有误')
    # 将模板传入html
    return render_template('09_index.html',form = register_form)
    
    if __name__ == '__main__':
    app.run(debug=True)
    
    #html部分:
    
    <body>
        <form method="post">
            {{ form.username.label }} {{ form.username }} <br>
            {{ form.password.label }} {{ form.password }} <br>
            {{ form.password2.label }} {{ form.password2 }} <br>
            {{ form.submit }} <br>
        </form>
    {% for message in get_flashed_messages() %}
        {{ message }}
    {% endfor %}
    </body>
    

    WTForms支持的HTML标准字段

    字段对象 说明
    StringField 文本字段

    TextAreaField 多行文本字段

    PasswordField 密码文本字段

    HiddenField 隐藏文件字段

    DateField 文本字段,值为 表单对象.DataFiled.data 文本格式

    IntegerField 文本字段,值为整数

    DecimalField 文本字段,值为decimal.Decimal

    FloatField 文本字段,值为浮点数

    BooleanField 复选框,值为True 和 False

    RadioField 一组单选框

    SelectField 下拉列表

    SelectMutipleField 下拉列表,可选择多个值

    FileField 文件上传字段

    SubmitField 表单提交按钮

    FormField 把表单作为字段嵌入另一个表单

    FieldList 一组指定类型的字段

    WTForms常用验证函数

    验证函数 说明

    DataRequired 确保字段中有数据

    EqualTo 比较两个字段的值,常用于比较两次密码输入

    Length 验证输入的字符串长度

    NumberRange 验证输入的值在数字范围内

    URL 验证URL

    AnyOf 验证输入值在可选列表中

    NoneOf 验证输入值不在可选列表中

    相关文章

      网友评论

        本文标题:Python day43_Flask入门

        本文链接:https://www.haomeiwen.com/subject/deyauftx.html