我正在使用wtforms编写登录页面。这些字段是用户名和密码。下面是为两个字段定义的两个验证。如果用户名上的验证方法引发异常,有没有办法停止在密码字段上执行验证功能
def validate_username(self, field):
# Check if not None for that username!
print('Inside check_username')
if User.query.filter_by(username=field.data).first() is None:
raise ValidationError(f'Sorry username : {field.data} is not registered!')
def validate_password(self, field):
# Below is not the actual code.This method will contain code to check of valid password.
raise ValidationError(f'Sorry username : {field.data} is not registered!')
现在发生的事情是上述两种方法都被调用,这是预期的,但如果用户名不存在,我不想检查密码
您无法停止尝试验证每个字段的 wtforms。
我建议你简单地覆盖验证:
def validate(self):
if not super().validate():
return False
if User.query.filter_by(username=self.username.data).first() is None:
self.errors["username"] = f'Sorry username : {self.username.data} is not registered!'
return False
if not check_that_password():
self.errors["password"] = f"Bad password for user {self.username.data}"
return False
return True