【发布时间】:2022-10-05 05:35:54
【问题描述】:
在我的类似推特的应用程序中,我希望允许用户编辑他们的个人资料。如果用户在编辑表单中提交的密码不是有效密码,我的应用程序应该闪烁一条消息(“密码错误”)并重定向到主页。
我遇到的问题是确保提交的密码是有效密码的表单。这是我到目前为止所拥有的:
class EditProfileForm(FlaskForm):
"""Edit form"""
username = StringField('Username', validators=[DataRequired()])
email = StringField('E-mail', validators=[DataRequired(), Email()])
image_url = StringField('(Optional) Image URL')
header_image_url = StringField('(Optional) Image URL')
bio = StringField('(Optional) Bio')
password = PasswordField('Password')
def __init__(self, user, *args, **kwargs):
super(EditProfileForm, self).__init__(*args, **kwargs)
self.user = user
def validate_password_proof(self, field):
if form.data != self.user.password:
raise ValidationError('Wrong password.')
我从另一篇文章中找到了这个验证器方法,但我不知道如何正确初始化表单(未定义“用户”):
@app.route('/users/profile', methods=["GET", "POST"])
def profile():
"""Update profile for current user."""
if not g.user:
flash("Access unauthorized.", "danger")
return redirect("/")
form = EditProfileForm(user)
return render_template()
如果有人有另一种解决方案来确保密码是正确的密码,或者可以指出我如何滥用上述内容,我将不胜感激!
【问题讨论】:
标签: python methods passwords flask-wtforms