【发布时间】:2014-08-21 14:39:26
【问题描述】:
我现在有点困惑。
我可以覆盖 Django 中的 handler404 和 handler500。我想,我可以这样做:
try:
mymodel = MyModel.objects.get(id=someid)
except MyModel.DoesNotExist:
raise Http404
但我很想知道究竟是什么导致了这个 404 - 服务器错误或只是一个错误的 URL..
这怎么可能?我可以在 handler404 中获得有关 500 错误的信息吗?
如果是 500,handler500 确实有一个 RequestContext,而像 {{STATIC_URL}} 这样的东西将在 500.html 中停止工作。这就是为什么我想,我会改为提出 404 并向 404 处理程序内的管理员发送有关错误的电子邮件。这有意义吗?
【问题讨论】:
-
这个问题很困惑。 Handler404是针对404错误,即未找到。 500 表示服务器错误。
-
@DanielRoseman 是的,但是
raise Http404给出的结果与一些错误的 url 相同。我的问题是,即使出现 500 个错误,我是否通过提高 404 做得对。如果是这样,如果它真的是 404 或 500,我想了解更多信息。 -
raise Http404 的作用与未找到相同,因为它是在未找到页面时启动的。当你自己提出错误 5xx 时,你能举个例子吗?错误 5xx 的处理程序用于在服务器端出现问题时显示页面 - 此时 django 向管理员(settings.ADMINS)发送电子邮件并提供详细信息。
-
@DimmuR 这就是重点。我没有筹集任何 500。相反,我只筹集了 404。:(