flask中的WTForms的主要作用就是做表单验证,把用户提交上来的数据进行验证是否合法,也就类似于表单验证,还可以做模版渲染。

使用方法

做表单验证:

  1. 自定义一个表单类,继承自wtforms.Form类。
  2. 定义好需要验证的字段,字段的名字必须和模版中那些需要验证的input标签的name属性值保持一致
  3. 在需要验证的字段上,需要指定好具体的数据类型。
  4. 在相关的字段上,通过validators指定验证器,验证器的格式是一个列表。
  5. 以后在视图中,就只需要使用这个表单类的对象,并且把需要验证的数据,也就是request.form传给这个表单类,以后调用form.validate()方法,如果返回True,那么代表用户输入的数据都是合法的,否则代表用户输入的数据是有问题的。如果验证失败了,那么可以通过form.errors来获取具体的错误信息。
    示例代码如下:
    ReistForm类的代码:

    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")])

    视图函数中的代码:

    form = RegistForm(request.form)
    if form.validate():
     return "success"
    else:
     print(form.errors)
     return "fail"

常用的过滤器

  1. Email:验证上传的数据是否为邮箱。
  2. EqualTo:验证上传的数据是否和另外一个字段相等,常用的就是密码和确认密码两个字段是否相等。
  3. InputRequir:原始数据的需要验证。如果不是特殊情况,应该使用InputRequired
  4. Length:长度限制,有min和max两个值进行限制。
  5. NumberRange:数字的区间,有min和max两个值限制,如果处在这两个数字之间则满足。
  6. Regexp:自定义正则表达式进行验证。
  7. URL:验证是否是URL格式。
  8. UUID:验证是否是UUID格式。

注意:在验证器里面我们可以通过message来指定错误的返回内容。

自定义验证器

  1. 首先定义一个方法,方法的名字规则是:validate_字段名(self,filed)
  2. 在方法中,使用field.data可以获取到这个字段的具体的值。
  3. 如果数据满足条件,那么可以什么都不做。如果验证失败,那么应该抛出一个wtforms.validators.ValidationError的异常,并且把验证失败的信息传到这个异常类中。
    示例代码:

    captcha = StringField(validators=[Length(4,4)])
     def validate_captcha(self,field):
         if field.data != 'sunxiaoning':
             raise ValidationError('验证码错误!')
Last modification:May 15, 2020
If you think my article is useful to you, please feel free to appreciate