当前位置: 首页 > 知识库问答 >
问题:

Django错误-匹配查询不存在

顾淳
2023-03-14

我终于将我的项目发布到生产级别,突然间我遇到了一些在开发阶段从未处理过的问题。

当用户发布一些操作时,我有时会得到以下错误。

Traceback (most recent call last):

  File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 111, in get_response
    response = callback(request, *callback_args, **callback_kwargs)

  File "home/ubuntu/server/opineer/comments/views.py", line 103, in comment_expand
    comment = Comment.objects.get(pk=comment_id)

  File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 131, in get
    return self.get_query_set().get(*args, **kwargs)

  File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 366, in get
    % self.model._meta.object_name)

DoesNotExist: Comment matching query does not exist

真正让我沮丧的是,该项目在本地环境中运行良好,而且数据库中确实存在匹配的查询对象。

现在我怀疑用户正在访问数据库,而数据库是保留给其他用户的,但是没有办法证明我的论点,也没有任何解决方案。

以前有人有过这样的问题吗?对如何解决这个问题有什么建议吗?

非常感谢你提前的帮助。

编辑:我已经使用从收到的服务器错误电子邮件中检索到的相同信息手动查询了数据库。我能够毫无问题地击中入口。此外,用户执行的完全相同的行为似乎在大多数情况下都不会引起任何问题,而是在某些情况下(目前尚不清楚)。总之,数据库中缺少条目肯定不是问题。

共有3个答案

岳均
2023-03-14

您可以使用以下选项:

comment = Comment.objects.filter(pk=comment_id)
拓拔烨赫
2023-03-14

引起错误的行在这里:

comment = Comment.objects.get(pk=comment_id)

您尝试访问不存在的注释。

from django.shortcuts import get_object_or_404

comment = get_object_or_404(Comment, pk=comment_id)

您的用户将获得404,这意味着他试图访问不存在的资源,而不是在您的服务器上出现错误。

到目前为止,我想你已经意识到了这一点。

有些用户(我也是他们的一部分)让选项卡长时间运行,如果用户有权删除数据,就可能发生这种情况。404错误可能比向管理员发送电子邮件更好地处理已删除的资源错误。

其他用户从其历史记录中转到地址(如果数据可能发生后已被删除,则相同)。

黄英韶
2023-03-14

也许你没有这样的主键注释记录,那么你应该使用下面的代码

try:
    comment = Comment.objects.get(pk=comment_id)
except Comment.DoesNotExist:
    comment = None
 类似资料:
  • 问题内容: 我已经在Django中实现了密码恢复功能。用我的方法,新密码将发送到他输入的电子邮件ID。当我提供正确的电子邮件(数据库中存在的电子邮件ID)时,它的工作正常。但是,当我提供不在数据库中的电子邮件ID时,就会出现此错误“ DoesNotExist位于/​​ forgotPassword / UniversityDetails匹配查询不存在。”。有人可以解决这个问题吗?将在此处粘贴我的代

  • 我有两个模型,当我要求的时候。POST. get('room_id')或('id')我得到一个错误房间匹配查询不存在.如何解决这个问题?帮我一把 我需要详细的房间请求获取id,预订日期范围(从\u日期到\u日期) 请帮助我,提前谢谢

  • 我正在尝试捕获异常,但无效。以下是我视图中的代码: 我还尝试了:“除了act_edit.DoesNotExist:”但错误仍然存在“活动匹配查询不存在”。你知道吗? 谢谢

  • 我使用的是django-allauth,我用以下细节配置了: 我设置了(因为我将默认站点更改为) 在settings.py中: 当我去: 我得到: 我做错了什么?

  • 问题内容: Python noob,因为这是我的第一个项目,所以请原谅我。 在我单击应用程序上的“注销”之前,该网站运行良好。在那之后,网站会给我这个错误:/ login /的SiteNotExist不存在网站匹配查询。 我到处搜索,获得的唯一解决方案与设置站点框架,SITE_ID等有关。我认为计算机上的这些项目都不错,但是找不到帮助你进行检查的演练/指南。 谁能告诉我问题出在哪里以及如何解决?在

  • Python新手,因为这是我的第一个项目,所以原谅我的不熟悉。 在我点击应用程序上的“注销”之前,该网站一直运行良好。之后,网站会给我这个错误:DoesNotExist at/login/Site匹配查询不存在。 我到处搜索,得到的唯一解决方案是建立站点框架、SITE_ID等。我认为我电脑上的这些项目都很好,但是我找不到一个演练/指南来帮助我检查它们。 有人能告诉我问题是什么以及如何解决它吗?提前