您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Flask-SQLAlchemy InvalidRequestError:对象已附加到会话

5b51 2022/1/14 8:20:28 python 字数 3035 阅读 478 来源 www.jb51.cc/python

我正在使用Flask创建一个论坛项目,并使用Flask-SQLAlchemy管理所有用户,线程,帖子等.但是,我发现当我尝试执行x(例如编辑帖子)时,如果我尝试执行其他操作(例如删除帖子),则会收到InvalidRequestError. 要编辑帖子, def post_edit(id, t_id, p_id): post = Post.query.filter_by(id=p_id).fir

概述

要编辑帖子,

def post_edit(id,t_id,p_id):
  post = Post.query.filter_by(id=p_id).first()
  if post.author.username == g.user.username:
    form = PostForm(body=post.body)
    if form.validate_on_submit():
      post.body = form.body.data
      db.session.commit()
      return redirect(url_for('thread',id=id,t_id=t_id))
    return render_template('post_edit.html',form=form,title='Edit')
  else:
    flash('Access denied.')
    return redirect(url_for('thread',t_id=t_id))

删除帖子,

@app.route('/forum=<id>/thr=<t_id>/p=<p_id>/delete',methods=['GET','POST'])
def post_delete(id,p_id):
  post = Post.query.filter_by(id=p_id).first()
  if post.author.username == g.user.username:
    db.session.delete(post)
    db.session.commit()
    return redirect(url_for('thread',t_id=t_id))
  else:
    flash('Access denied.')
    return redirect(url_for('thread',t_id=t_id))

并张贴帖子

@app.route('/forum/id=<id>/thr=<t_id>','POST'])
def thread(id,t_id):
  forum = Forum.query.filter_by(id=id).first()
  thread = Thread.query.filter_by(id=t_id).first()
  posts = Post.query.filter_by(thread=thread).all()
  form = PostForm()
  if form.validate_on_submit():
    post = Post(body=form.body.data,timestamp=datetime.utcNow(),thread=thread,author=g.user)
    db.session.add(post)
    db.session.commit()
    return redirect(url_for('thread',t_id=t_id))
  return render_template('thread.html',forum=forum,posts=posts,title=thread.title)

不幸的是,解决这个问题的唯一可靠方法是重置实际运行应用程序的脚本run.py.

#!bin/python

from app import app
app.run(debug=True,host='0.0.0.0')

他描述了需要修改WooshAlchemy扩展的“修复”.

通常虽然它可能意味着您调用Post模型对象然后使用“session.add”附加它,然后尝试“session.delete”或在同一对象上执行另一个“session.add”.

你的请求路由也有点奇怪我从未见过“thr =< t_id>” Flask之前的符号类型.这对你有用吗?

http://flask.pocoo.org/docs/quickstart/#variable-rules

总结

以上是编程之家为你收集整理的Flask-SQLAlchemy InvalidRequestError:对象已附加到会话全部内容,希望文章能够帮你解决Flask-SQLAlchemy InvalidRequestError:对象已附加到会话所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶