请问wtforms中的验证如何中途终止?

ssikkiss 发布于 2014/12/07 22:47
阅读 184
收藏 0

有一个登录表单,包含一个用户名框和一个密码框,我想实现:一旦检查出用户名没有注册,就不要进行后面的密码验证了,请问如何实现?

我的代码:

class login_form(Form):
  email = TextField('email', validators=[validators.email()])
  signmsg = HiddenField('signmsg')
  def validate_email(form,field):
    u = User.query.filter(User.email == field.data).first()#是否注册的判断
    if not u:
      #validators.StopValidation('ss')
      raise validators.StopValidation('ss')#这个StopValidation怎么没有用呢
  def validate_signmsg(form,field):
    e = form['email'].data
    u = User.query.filter(User.email == e).first()#这个是否注册的判断执行了两次,太浪费了
    if not u:
      raise ValidationError('email not registered')#这个错误显示在密码框而不是用户名框后面,太别扭了,如果能去掉这个验证就好了,直接去掉会导致下面的语句出错
    if not u.checkpwd(form['csrf_token'].data,field.data):#验证密码的函数
      raise ValidationError('password not match')
这段代码该如何修改呢

加载中
返回顶部
顶部