• WTForms


    一、简单介绍flask中的wtforms

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

    安装:

    pip3 install wtforms

    用户登录简例:

    from  flask import Flask,render_template,request,redirect
    from  wtforms.fields import core
    from wtforms.fields import html5
    from wtforms.fields import simple
    from wtforms import Form
    from wtforms import validators
    from wtforms import widgets
    app = Flask(__name__,template_folder="templates")
    
    class Myvalidators(object):
        '''自定义验证规则'''
        def __init__(self,message):
            self.message = message
        def __call__(self, form, field):
            print(field.data,"用户输入的信息")
            if field.data == "haiyan":
                return None
            raise validators.ValidationError(self.message)
    
    class LoginForm(Form):
        '''Form'''
        name = simple.StringField(
            label="用户名",
            widget=widgets.TextInput(),
            validators=[
                Myvalidators(message="用户名必须是haiyan"),#也可以自定义正则
                validators.DataRequired(message="用户名不能为空"),
                validators.Length(max=8,min=3,message="用户名长度必须大于%(max)d且小于%(min)d")
            ],
            render_kw={"class":"form-control"}  #设置属性
        )
    
        pwd = simple.PasswordField(
            label="密码",
            validators=[
                validators.DataRequired(message="密码不能为空"),
                validators.Length(max=8,min=3,message="密码长度必须大于%(max)d且小于%(min)d"),
                validators.Regexp(regex="d+",message="密码必须是数字"),
            ],
            widget=widgets.PasswordInput(),
            render_kw={"class":"form-control"}
        )
    
    
    
    @app.route('/login',methods=["GET","POST"])
    def login():
        if request.method =="GET":
            form = LoginForm()    # 传递form
            return render_template("login.html",form=form)
        else:
            form = LoginForm(formdata=request.form)
            if form.validate():      # 校验
                print("用户提交的数据用过格式验证,值为:%s"%form.data)
                return "登录成功"
            else:
                print(form.errors,"错误信息")
            return render_template("login.html",form=form)
    
    
    if __name__ == '__main__':
        # app.__call__()
        app.run(debug=True)

    login.html

    <body>
    <form action="" method="post" novalidate>
        <p>{{ form.name.label }} {{ form.name }} {{ form.name.errors.0 }}</p>
        <p>{{ form.pwd.label }} {{ form.pwd }} {{ form.pwd.errors.0 }}</p>
        <input type="submit" value="提交">
        <!--用户名:<input type="text">-->
        <!--密码:<input type="password">-->
        <!--<input type="submit" value="提交">-->
    </form>
    </body>

     参考链接:https://www.cnblogs.com/haiyan123/p/8254228.html

  • 相关阅读:
    Hexo简介
    MarkDown基本语法
    Github 协同开发
    Java基础10:全面解读Java异常
    Java基础8:深入理解内部类
    Java基础9:解读Java回调机制
    Java基础6:代码块与代码加载顺序
    Java基础7:关于Java类和包的那些事
    java基础4:深入理解final关键字
    Java基础5:抽象类和接口
  • 原文地址:https://www.cnblogs.com/hnlmy/p/10775608.html
Copyright © 2020-2023  润新知