zoukankan      html  css  js  c++  java
  • Flask之WTfroms组件

    一、WTfroms简介

    WTForms插件是类似于django的form组件的插件,可以帮我们写标签,校验数据等。

    二、安装与使用

    安装:

    pip install WTForms

    使用:

    from wtforms import Form
    from wtforms.fields import simple, core
    from wtforms import validators
    
    class RegForm(Form):
    
        username = simple.StringField(
            label="用户名",
            validators=[
                validators.DataRequired(message="数据不能为空!"),
                validators.length(min=4, max=6, message="用户名不能少于4位且不能大于6位")
            ],
            render_kw={"class": "form-control", "pp": "88"}
        )
        password = simple.PasswordField(
            label="密码",
            validators=[
                validators.DataRequired(message="密码不能为空!"),
                validators.length(min=6, max=16, message="密码不能少于6位且不能大于6位"),
                validators.Regexp(regex="d+", message="密码必须是数字")
            ],
            render_kw={"class": "form-control", "pp": "88"}
        )
        re_password = simple.PasswordField(
            label="确认密码",
            validators=[
                validators.EqualTo(fieldname="password", message="两次密码不一致")
            ],
            render_kw={"class": "form-control"}
        )
        gender = core.RadioField(
            label="性别",
            validators=[
                validators.DataRequired(message="请先选择一个性别!")
            ],
            choices=((1, ""), (2, "")),
            coerce=int,
            # default=1,
        )
        hobby = core.SelectMultipleField(
            label="爱好",
            choices=((1, "游戏"), (2, "妹子"), (3, "汉子")),
            coerce=int,
            default=[1, 2],
            render_kw={"class": "form-control"}
        )
    
    @app.route("/register", methods=("GET", "POST"))
    def reg():
        form_obj = RegForm()
        if request.method == "POST":
            print(request.form)
            form_obj = RegForm(request.form)
            if form_obj.validate():
                ers = request.form.to_dict()
                print(ers)
                print(form_obj.data)
                return "注册成功"
        return render_template("reg.html", form_obj=form_obj)
    
    
    if __name__ == '__main__':
        app.run(debug=True)

    前端:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css"
              integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    </head>
    <body>
    <div class="container">
        <div class="row">
            <div class="col-md-4 col-md-offset-4">
                <form action="" method="post" novalidate>
                    {% for field in form_obj %}
                        <div class="form-group">
                            {{ field.label }}
                            {{ field }}
                            {{ field.errors.0 }}
                        </div>
                    {% endfor %}
                    <div>
                        <button class="btn btn-primary btn-lg btn-block">注册</button>
                    </div>
                </form>
            </div>
        </div>
    </div>
    
    </body>
    </html>
  • 相关阅读:
    vue 将毫秒转为日期
    element-ui 点击获取table的行索引
    LInux设置tomcat端口为80
    java引用传递和值传递
    java包装类的自动装箱及缓存
    理解JVM之java内存模型
    理解JVM之类加载机制
    理解JVM之内存分配以及分代思想实现
    理解JVM之垃圾回收
    理解JVM之对象的生命周期
  • 原文地址:https://www.cnblogs.com/qq631243523/p/10268873.html
Copyright © 2011-2022 走看看