#
from wtforms.validators import Length, EqualTo from wtforms import Form, StringField #验证表单 class RegisterForm(Form): class RegistForm(Form): username = StringField(validators=[Length(min=3, max=10, message='用户名长度必须在3到10位之间')]) password = StringField(validators=[Length(min=6, max=10)]) password_repeat = StringField(validators=[Length(min=6, max=10), EqualTo("password")])
#
@app.route('/login/',methods=['GET','POST']) def login(): if request.method == 'GET': return render_template("login.html") else: form =RegisterForm(request.form) if form.validate(): return "success" else: print(form.errors) return "fail"
#
### 做表单验证: 1. 自定义一个表单类,继承自wtforms.Form类。 2. 定义好需要验证的字段,字段的名字必须和模版中那些需要验证的input标签的name属性值保持一致。 3. 在需要验证的字段上,需要指定好具体的数据类型。 4. 在相关的字段上,指定验证器。 5. 以后在视图中,就只需要使用这个表单类的对象,并且把需要验证的数据,也就是request.form传给这个表单类,以后调用form.validate()方法, 如果返回True,那么代表用户输入的数据都是合法的,否则代表用户输入的数据是有问题的.如果验证失败了, 那么可以通过form.errors来获取具体的错误信息。
#常用的验证器
1. Email:验证上传的数据是否为邮箱。 2. EqualTo:验证上传的数据是否和另外一个字段相等,常用的就是密码和确认密码两个字段是否相等。 3. InputRequir:原始数据的需要验证。如果不是特殊情况,应该使用InputRequired。 3. Length:长度限制,有min和max两个值进行限制。 4. NumberRange:数字的区间,有min和max两个值限制,如果处在这两个数字之间则满足。 5. Regexp:自定义正则表达式。 6. URL:必须要是URL的形式。 7. UUID:验证UUID。