zoukankan      html  css  js  c++  java
  • Flask 三方组件 WTForms

    WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证

    from flask import Blueprint
    from flask import request
    from flask import render_template
    from wtforms.fields import simple, core   #simple:简单的字段
    from wtforms import Form, validators #validators:校验条件
    
    reg = Blueprint("reg", __name__)
    
    
    class RegForm(Form):
        username = simple.StringField(
            label="用户名:",  #前端显示的字段
         #default:None, #组件生成后的默认值  id
    ="username", render_kw={"class": " form-control col-sm-2 "}, #为标签创建属性 validators=[ #声明校验条件 validators.DataRequired(message="用户名不能为空"), validators.Length(min=2, max=7, message="用户名不能小于%(min)d,不能大于%(max)d") ] ) password = simple.PasswordField( label="密码:", id="password",
         render_kw
    ={"class": " form-control col-sm-2 "}, validators=[ validators.DataRequired(message="密码不能为空"), validators.Length(min=6, max=16, message="用户名不能小于%(min)d,不能大于%(max)d") ] ) repassword = simple.PasswordField( label="确认密码", render_kw={"class": " form-control col-sm-2 "}, validators=[ validators.EqualTo("password", message="密码不一致") ] ) email = simple.StringField( label="邮箱", render_kw={"class": " form-control col-sm-2 "}, validators=[ validators.Email(message="邮箱格式不符") ] ) gender = core.RadioField( label="性别", choices=[ (1, ""), (2, "") ], coerce=int ) hobby = core.SelectMultipleField( label="爱好", choices=[ (1, "抽烟"), (2, "喝酒"), (3, "烫头"), ], coerce=int ) sub = simple.SubmitField( label="注册", ) @reg.route("/reg", methods=["GET", "POST"]) def reg_func(): if request.method == "GET": reg = RegForm() #实例化对象 return render_template("reg.html", reg=reg) else: new_reg = RegForm(formdata=request.form) if new_reg.validate(): return "注册成功" else: return render_template("reg.html", reg=new_reg)

    login.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
    <form action="" method="post" novalidate>
        {{ lf.username.label }} {{ lf.username }} {{ lf.username.errors.0 }}
        {{ lf.password.label }} {{ lf.password }} {{ lf.password.errors.0 }}
        {{ lf.sub }}
    </form>
    </body>
    </html>

    reg.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
    </head>
    <body>
    <form action="" method="post">
        {% for f in regf %}
            {% if  f.label == "登陆" %}
                <p>{{ f }}{{ f.errors.0 }}</p>
            {% else %}
                <p>{{ f.label }}{{ f }}{{ f.errors.0 }}</p>
            {% endif %}
        {% endfor %}
    
    </form>
    
    </body>
    </html>
  • 相关阅读:
    Visio画出的图,裁剪成固定大小再添加马赛克的方法
    单张PPT转成单张PDF的PDF文件怎么设置打印出一页纸有6页PPT
    MVC下载电子表格到本地((导出表格4-4)
    获取配置文件(导出表格4-3)
    获取随机字符串(导出表格4-2)
    ExcelHelper 电子表格帮助类(导出表格4-1)
    二、操作NPOI_从数据库中导出数据到Excel_支持.xls格式
    一、操作NPOI从Excel中导入数据到SqlServer数据库中_xls格式
    Fetch(Promise微队列) 增删改查
    C#获取枚举的描述
  • 原文地址:https://www.cnblogs.com/wanglan/p/10574198.html
Copyright © 2011-2022 走看看