Я создаю страницу для сброса пароля, каждый раз, когда я регистрирую новую учетную запись и выполняю вход, когда я пытаюсь сбросить пароль, появляется sqlalchemy.exc.InvalidRequestError: Object '<User at 0x10d437eb8>' is already attached to session '2' (this is '3')
, кажется, что каждый раз, когда я изменяю уже существующую строку в базе данных появляется эта ошибка.
Вот мой код:
Регистрация просмотра:
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)
Сброс пароля:
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
в существующей строке? Как это исправить