【发布时间】:2020-06-13 08:01:38
【问题描述】:
我的表单中有一个 login() 函数,我想返回其中特定字段的错误,我的问题是,我该如何做这样的事情,这是我当前的函数:
class LoginForm(FlaskForm):
email = StringField('Email',
validators=[DataRequired(), Email()])
password = PasswordField('Password', validators=[DataRequired()])
remember = BooleanField('Remember Me')
submit = SubmitField('Login')
def validate_email(self, email):
user = models.User.query.filter_by(email=email.data).first()
if user is None:
raise ValidationError('Such user not found')
def login(self, user):
if check_password_hash(user.password, self.password.data):
flash('Logged in successfully!', category='success')
login_user(user, remember=self.remember.data)
return True
else:
raise LoginException('Wrong Password')
我应该只是闪现错误还是应该将其重新制作为单独的验证密码功能?如果有一种方法可以让我返回 LoginException 以便它显示在我的密码字段下,我会很高兴知道。
【问题讨论】:
-
您没有显示任何
WTForm。您可以使用.errors属性访问它们,但您的问题中没有足够的信息来帮助您解决此问题 -
好的,添加了整个表格,还有什么我应该提供的吗?那么 .errors 是空的,因为登录函数不是特定于字段的,我应该将该函数拆分为 validate_password() 函数吗?
-
为什么在表单中验证密码而不在用户模型中验证?
-
如果我要在模型中验证它,那么我不能返回任何会出现在该字段下的错误
-
为什么要告诉用户邮箱是否存在或者密码不正确。在安全性方面,这并不合理。使用 Flash 消息替代表单字段下的错误消息。