gpt4 book ai didi

flask - sqlalchemy.exc.InvalidRequestError : Object '' is already attached to session '2' (this is '3' )

转载 作者:行者123 更新时间:2023-12-03 17:21:50 28 4
gpt4 key购买 nike

我正在制作一个重置密码的页面,每次我注册一个新帐户并登录时,当我尝试重置密码时,sqlalchemy.exc.InvalidRequestError: Object '<User at 0x10d437eb8>' is already attached to session '2' (this is '3')出现,似乎每次我修改数据库中已经存在的行时,都会出现这个错误。

这是我的代码:

注册 View :

def register():
form = RegisterForm()
if form.validate_on_submit():
data = form.data
user = User(
name=data["name"],
email=data["email"],
pwd=generate_password_hash(data["pwd"]),
avatar="user-blue.png",
uuid=uuid.uuid4().hex
)
db.session.add(user)
db.session.commit()
return redirect(url_for("home.login"))
return render_template("home/register.html", form=form)

重置密码 View :
def pwd_reset():
form = PwdForm()
if form.validate_on_submit():
data = form.data
user = User.query.filter_by(name=session["user"]).first()
from werkzeug.security import generate_password_hash
user.pwd = generate_password_hash(data["new_pwd"])
db.session.add(user) # problem here
db.session.commit()
return redirect(url_for("home.success"))
return render_template("home/pwd_reset.html", form=form)

据我所知,我不能使用 db.session.add在现有行上?如何解决这个问题

最佳答案

您不需要添加 user到数据库 session 。

只需修改预期的字段并提交 session :

def pwd_reset():
form = PwdForm()
if form.validate_on_submit():
data = form.data
user = User.query.filter_by(name=session["user"]).first()
from werkzeug.security import generate_password_hash
user.pwd = generate_password_hash(data["new_pwd"])
db.session.commit()
return redirect(url_for("home.success"))
return render_template("home/pwd_reset.html", form=form)

关于flask - sqlalchemy.exc.InvalidRequestError : Object '<User at 0x10d437eb8>' is already attached to session '2' (this is '3' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55144541/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com