Python Flask wt forms ventilator 检查密码是否匹配数据库

Python Flask wt forms ventilator check if password is matching database

我正在尝试创建一个在更新记录之前用户必须输入密码进行验证的位置。

我正在考虑使用这样的东西。

class AccountSettingsForm(Form):
        password_proof= TextField("Password:",[validators.EqualTo(current_user.password, message='Passwords Invlaid')])

但是我得到这个错误
AttributeError: 'NoneType' 对象没有属性 'password'

您需要使用语法 validate_{field_name} 创建一个验证器方法。此外,由于您正在使用其他数据(用户实例,其中包含他们的密码),您需要使用该用户实例初始化表单。

类似这样的内容应该适用于您的示例:

from wtforms import ValidationError

class AccountSettingsForm(Form):
    password_proof= TextField("Password:")

    def __init__(self, user, *args, **kwargs):
        super(AccountSettingsForm, self).__init__(*args, **kwargs)
        self.user = user

    def validate_password_proof(self, field):
        if field.data != self.user.password:
            raise ValidationError('Wrong password.')

那么在初始化表单的时候,需要这样操作:

form = AccountSettingsForm(current_user)

在一个不相关的旁注中,如果您不这样做,您应该加密您的用户密码。