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

2023-12-19

我正在使用 Flask 创建一个论坛项目,并使用 Flask-SQLAlchemy 管理所有用户、线程、帖子等。但是,我发现当我尝试执行 x 操作(例如编辑帖子)时,如果我尝试执行其他任何操作(例如删除帖子),则会收到 InvalidRequestError 错误。

要编辑帖子,

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', id=id, t_id=t_id))

并删除帖子,

@app.route('/forum=<id>/thr=<t_id>/p=<p_id>/delete', methods=['GET','POST'])
def post_delete(id, t_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', id=id, t_id=t_id))
  else:
    flash('Access denied.')
    return redirect(url_for('thread', id=id, t_id=t_id))

并发布帖子

@app.route('/forum/id=<id>/thr=<t_id>', methods=['GET','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', id=id, t_id=t_id))
  return render_template('thread.html', forum=forum, thread=thread, posts=posts, form=form, title=thread.title)

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

#!bin/python

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

您是否正在使用 WooshAlchemy,因为它可能是您问题的一部分。此处描述 http://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-xvi-debugging-testing-and-profiling

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

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

另外,你的请求路由对于 Flask 来说有点奇怪,我以前从未见过 Flask 的“thr=”类型的符号。这对你来说效果好吗?

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask-SQLAlchemy InvalidRequestError:对象已附加到会话 的相关文章

  • Heroku 上的 OpenCV 错误,但模型部署成功

    我正在尝试在 Heroku 上部署深度学习 Flask 应用程序 它已成功部署 但仍然给我Application Error信息 我检查了日志 但没有发现任何内容 帮我 构建日志 gt Building on the Heroku 20 s
  • 如何使用gunicorn和bokeh服务配置Nginx

    我想提供一个 Flask 应用程序 该应用程序使用本地网络服务器上的嵌入式散景服务 为了说明这一点 我使用了一个例子散景服务示例 https github com bokeh bokeh blob 0 12 11 examples howt
  • Flask 应用程序路由中的多个参数

    烧瓶怎么写app route如果我在 URL 调用中有多个参数 这是我从 AJax 调用的 URL http 0 0 0 0 8888 createcm summary VVV change Feauure 我试图写我的烧瓶app rout
  • python:API 令牌生成及其危险

    我正在按照 Flask Web Development 一书来实现基于令牌的身份验证 基本上 用户使用 HTTP 基本身份验证对其进行身份验证 并为其生成令牌 s Serializer app config SECRET KEY expir
  • 连接被拒绝:当uwsgi和nginx在不同容器中时

    我正在尝试设置两个 docker 容器 是的 无需 docker compose 分开 一个带有 nginx 另一个带有带有基本 Flask 应用程序的 uwsgi 我在 docker 内的同一网络中运行容器我的 nginx 配置已添加 链
  • Jinja2 嵌套循环计数器

    set cnt 0 for room in rooms for bed in room set cnt cnt 1 endfor cnt endfor 假设我们有一个嵌套循环 打印的 cnt 将始终为 0 因为这是我们进入第一个 for 循
  • 如何配置 Flask-Cache 无限超时

    在 Flask Cache 文档中 所有示例都使用有限超时 我不想在应用程序运行时刷新缓存 这可能吗 如果可以 我该怎么做 Flask Cache 使用werkzeug contrib cache在幕后 来自文档 http werkzeug
  • 将 window.location 传递给 Flask url_for

    我正在使用 python 在我的页面上 当匿名用户转到登录页面时 我想将一个变量传递到后端 以便它指示用户来自哪里 发送 URL 因此 当用户单击此锚链接时 a href Sign in a 我想发送用户当前所在页面的当前 URL
  • Flask 环境变量被忽略(FLASK_ENV 和 FLASK_APP)WINDOWS 10

    After setting the environment variables FLASK ENV and FLASK APP running flask run will give me this error 该代码片段显示了命令提示符
  • Flask-admin 内联建模传递表单参数会抛出 AttributeError

    Flask 开发者们大家好 在 Flask admin 中 我目前尝试在模型视图中实现内联模型编辑 在模型方面 我有一个简单的树结构 表示一组内容页面 每个节点都有多个子节点以及与其关联的多个内容数据模型 模型被命名为ContentNode
  • Flask 应用程序中的双 IPv4 和 IPv6 支持

    是否可以运行 Flask 来监听 IPv4 和 IPv6 即双 IP 堆栈 据我检查 可以使用以下命令在 IPv4 中运行 app run host 0 0 0 0 port port debug True 或 IPv6 使用 app ru
  • 带 Flask 的 RPI dht22:无法将第 4 行设置为输入 - 等待 PulseIn 消息超时

    我正在尝试制作一个 Raspberry Pi 3 REST API 使用 DHT22 提供温度和湿度 整个代码 from flask import Flask jsonify request from sds011 import SDS01
  • Python代码执行时自动打开浏览器

    我正在 Python Flask 中实现 GUI Flask 的设计方式是 必须 手动 打开本地主机以及端口号 有没有一种方法可以使其自动化 以便在运行代码时自动打开浏览器 本地主机 我尝试使用 webbrowser 包 但它在会话终止后打
  • 如何使用 Ajax 在 Flask 中发布按钮值而不刷新页面?

    我有一个问题 当我单击 Flask 应用程序中的按钮时 我想避免重新加载 我知道有 Ajax 解决方案 但我想知道如何将我的按钮链接到 ajax 函数以发布按钮值并运行链接到其值的 python 函数 这是我的 html 按钮 div di
  • 在 Docker 容器中以主机用户身份运行

    在我的团队中 我们在进行开发时使用 Docker 容器在本地运行我们的网站应用程序 假设我正在开发 Flask 应用程序app py具有依赖关系requirements txt 工作流程大致如下 I am robin and I am in
  • 在 cherokee 和 uwsgi 上部署 Flask [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我正在尝试部署一个使用 cherokee 和 uwsgi 开发的 Flask Web 应用程序 我安装了 cherokee 和 uwsgi 并正在工作
  • 使用gunicorn和环境变量运行flask应用程序

    对于本地开发 我只需设置包含必要变量的 env 文件 然后运行应用程序 Flask run 一切看起来都很好 所有环境变量都在应用程序中正确读取和设置 但是 当我使用 Gunicorn 运行应用程序时 gunicorn api app bi
  • 在 Python 中将 GET 更改为 POST (Flask)

    我正在尝试创建一个简单的应用程序 其中在服务器上生成整数数组并将其发送到客户端 以下是 app py 中的一些示例 工作 代码 from flask import Flask render template request url for
  • Flask WTForms 使用变量自动填充 StringField

    我有一个表格 我想用上一页收到的信息自动填充一些字段 但如果他们想调整它 它需要是可更改的 我正在为我的 SelectField 使用动态创建的列表 但添加 StringField 并不成功 请参阅下面的我的代码 forms py clas
  • Flask 装饰器怎么能有参数呢?

    我以与这里相同的方式实现了一个装饰器如何在 Flask 中使用参数创建 python 装饰器函数 用于授权 https stackoverflow com questions 13896650 how to make a python de

随机推荐

  • Delphi / SuperObject - 访问子节点

    我的服务器有以下 JSON userid 12 username TestChar logged yes status Premium User areas SERVICEAREA XX1 id 1 area SERVICEAREA XX1
  • 在 Perl 中,如何打印哈希中最大值对应的键?

    如何仅打印哈希的第一个键和元素 我已经有一个排序的哈希 但我只想打印第一个键和相应的值 谢谢 感谢大家 最后我将键和值推送到两个不同的 array 并打印每个数组的元素 0 它可以工作 哈希值具有无序的键 所以 不存在这样的密钥第一把钥匙在
  • 如何从 Emacs 运行 iex?

    当我使用 Emacs 中的 elixir mode iex 运行 iex 时 我不断收到此警告 Warning could not run smart terminal falling back to dumb one 我认为这只是意味着我
  • zmq:多线程可以以简单的 PUSH-PULL 模式进行 PUSH

    我有两个进程 producer它通过推送消息ZMQ http www zeromq org to a consumer以简单的 拉 推 点对点模式 生产者有几个内部线程send 通过 zmq 但是 0MQ 的文档建议不要在线程之间共享套接字
  • 如何从 JAX-WS Web 服务中访问 ServletContext?

    我想通过将对象存储为 Servlet 上下文属性来在 Servlet 和 Web 服务 JAX WS 之间共享该对象 但是如何从 Web 服务中检索 servlet 上下文呢 JAX WS 通过消息上下文提供 Servlet 上下文 可以使
  • 对 log10 函数的未定义引用

    我正在使用 Eclipse Kepler 进行构建 并包括math h 但是 我收到错误 对 log10 的未定义引用 还类型uint8 t and unit32 t都没有得到解决 我已将两者都包括在内stdint h and inttyp
  • PyYAML 错误:无法确定标签“!vault”的构造函数

    我正在尝试读取具有标签的 YAML 文件 vault在里面 我收到错误 无法确定标签 vault 的构造函数 在阅读了几篇博客后 我了解到我需要指定一些构造函数来解决此问题 但我不清楚如何做到这一点 import yaml from yam
  • C# - 将控件移动到鼠标位置

    我试图让一个控件在用户单击并拖动控件时跟随光标 问题是 1 控件没有到达鼠标的位置 2 控件闪烁并飞得到处都是 我尝试了几种不同的方法来做到这一点 但到目前为止都失败了 我试过了 protected override void OnMous
  • 通过 DI 在 Spring 框架中正确使用 LOG4J

    我正在尝试使用 Log4j 作为 Spring 框架的一部分 据我了解 通过使用适当的豆子 系统应该映射一个可在代码中访问的单例实例 同时将日志记录深度自动映射到类 类似于 Log4J 的正常使用 如下所示 Logger log Logge
  • 如何修复 IndentationError:“需要缩进块”?

    我收到一个错误 IndentationError 需要一个缩进块 在第3行 answer subprocess check output home dir final 3 sh 我的代码是 import subprocess while T
  • 是否可以使用 TestCafe .meta 对象跳过从 cli 运行的测试

    我正在使用 TestCafe 来运行我的集成测试 我知道它有test skip函数 当我在本地测试并想要跳过一组我不需要 不想运行的测试时 这非常有用 但我想知道是否有办法运行所有测试 除了 test meta environmentSpe
  • Select2 不创建 name 属性

    我使用 select2 jQuery 插件创建了一个标签框 因此我使用了以下html表单代码
  • 当 UITextField 成为第一响应者时,如何使 UIScrollView 自动滚动

    我看过周围的帖子here https stackoverflow com questions 4585718 disable uiscrollview scrolling when uitextfield becomes first res
  • 使用 C++ 调整位图图像亮度/对比度

    使用 C 调整图像亮度 对比度 无需使用任何其他 3rd 方库或依赖项 图像亮度为here https web archive org web 20091229041814 http www kweii com site color the
  • 如何弹出“?123”Android键盘

    我有一个 EditText 需要根据状态处理数字和 或字母输入 在某些情况下 用户可以输入任一类型的输入 我只能使用以下命令弹出 电话 键盘setInputType InputType TYPE CLASS NUMBER 它可以工作 但不允
  • Scala 案例类和构造函数

    我发现自己编写了很多 某种 样板代码 例如说我有以下特征 trait Foo def x Int trait Bar def y Boolean def z String 然后我想要一个案例类 它的作用只不过是实现这些 case class
  • 如何为项目符号空格数字和点编写正则表达式

    我使用正则表达式来表示我的句子包含项目符号空格数字和点 1 This is sample Application 2 This is Sample java program regex s d s A z Required output T
  • 为什么“BESbewy”出现在我的网站跨度中?

    我注意到 Firebug 在主体末尾有一个带有 BESbewy 字符串的跨度 左侧和顶部带有 999 且可见性隐藏 首先想到的是我是如何被黑客攻击的 但经过一天的搜索后 我不再那么确定了 所以我开始认为这与 Google Maps API
  • 对 PDF 文件进行数字签名 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Flask-SQLAlchemy InvalidRequestError:对象已附加到会话

    我正在使用 Flask 创建一个论坛项目 并使用 Flask SQLAlchemy 管理所有用户 线程 帖子等 但是 我发现当我尝试执行 x 操作 例如编辑帖子 时 如果我尝试执行其他任何操作 例如删除帖子 则会收到 InvalidRequ