wtforms的实现

from flask import Flask,request,render_template,session,current_app,g,redirect
from wtforms import Form
from wtforms.csrf.core import CSRF
from wtforms.fields import simple
from wtforms.fields import html5
from wtforms.fields import core
from hashlib import md5

from wtforms import widgets
from wtforms import validators

app = Flask(__name__)


class LoginForm(Form):
    name = simple.StringField(
        validators=[
            validators.DataRequired(message='用户名不能为空.'),
        ],
        widget=widgets.TextInput(),
        render_kw={'placeholder':'请输入用户名'}
    )
    pwd = simple.PasswordField(
        validators=[
            validators.DataRequired(message='密码不能为空.'),

        ],
        render_kw={'placeholder':'请输入密码'}
    )

    def validate_name(self, field):
        """
        自定义name字段规则
        :param field:
        :return:
        """
        # 最开始初始化时,self.data中已经有所有的值
        print('钩子函数获取的值',field.data)
        if not field.data.startswith('old'):
            raise validators.ValidationError("用户名必须以old开头") # 继续后续验证
            # raise validators.StopValidation("用户名必须以old开头")  # 不再继续后续验证

@app.route('/login',methods=['GET','POST'])
def login():
    if request.method == "GET":
        form = LoginForm()
        return render_template('login.html',form=form)

    form = LoginForm(formdata=request.form)
    if form.validate():
        print(form.data)
        return redirect('https://www.luffycity.com/home')
    else:
        return render_template('login.html', form=form)


if __name__ == '__main__':
    app.run()

 

posted @ 2018-06-21 17:30  liang哥哥  阅读(106)  评论(0)    收藏  举报