Python 使用散列应用程序更新密码表单

Python 使用散列应用程序更新密码表单,python,flask,bootstrap-4,wtforms,Python,Flask,Bootstrap 4,Wtforms,我正在学习一门叫做python网络编程的课程。我们学会了使用web框架。我正在为这个主题的项目工作,我已经使用flask创建了一个应用程序。我已经制作了一个注册表单和登录表单,它正在使用SqlAlchemy创建数据库。现在,我不明白的是,当我创建一个用户,使用updateform登录并更改其密码时,我似乎找不到能够登录的方法 我认为解决方案是散列密码,因为我的登录表单搜索散列密码,而我的更新视图没有创建一个。因此,我的问题是如何在user_change视图中创建哈希密码 很抱歉问这个愚蠢的问题,

我正在学习一门叫做python网络编程的课程。我们学会了使用web框架。我正在为这个主题的项目工作,我已经使用flask创建了一个应用程序。我已经制作了一个注册表单和登录表单,它正在使用SqlAlchemy创建数据库。现在,我不明白的是,当我创建一个用户,使用updateform登录并更改其密码时,我似乎找不到能够登录的方法

我认为解决方案是散列密码,因为我的登录表单搜索散列密码,而我的更新视图没有创建一个。因此,我的问题是如何在user_change视图中创建哈希密码


很抱歉问这个愚蠢的问题,但我对这个问题还不太熟悉,我似乎迷失了方向。

是的,你可以用wtforms和sqlalchemy来解决这个问题

class UpdateAccountForm(FlaskForm):
    username = StringField('Username', validators=[DataRequired(), Length(min=2,max=20)])
    email = StringField('Email', validators=[DataRequired(), Email()])
    submit = SubmitField('Update')

本教程可能对您有很大帮助

您好,谢谢您的回复。我遵循了您发送的vide教程,但是当我尝试更新信息并注销以再次登录时,当我尝试使用新凭据登录时,收到一个错误“无效用户名/密码”。任何建议我得到了我问题的答案!视频教程很好,但没有提到任何关于密码散列的内容,所以我添加了以下内容:hashed_password=generate_password_hash(form.password.data,method='sha256')就在if form.validate_on_submit()下面:只需编辑form.password.data中要散列的密码即可。@AlexanderMyrvold能否发送最终代码?我对哈希密码也有同样的问题
@app.route("/account" , methods=['GET','Post'])
@login_required #This is from flask-login extension
def account():
    form = UpdateAccountForm()
    if form.validate_on_submit():
        current_user.username = form.username.data
        current_user.email = form.email.data
        db.session.commit()
        flash('Your account has been updated')
        return redirect(url_for('account'))
    elif request.method == 'GET':
        form.username.data = current_user.username
        form.email.data = current_user.email
    return render_template('account.html', title="Account", form=form)