我现在有点糊涂了。
在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处理程序中的错误。这有道理吗?
发布于 2014-08-21 15:05:46
底线是:
为了生成/原因/引发一个500,您必须请求一个有效的URL。
这很简单-- 404只有在没有500错误的情况下才会被引发,因为500错误不会阻止链接有效。
因此,如果它是404,则不可能也引发500;因为如果不请求有效的URL,就不会运行服务器端代码;因此不能触发500。
它们是相互排斥的。
在您的具体案例中,下面是发生的情况:
/foo/bar/1raise Http404时,它将返回一个带有404错误代码的响应。您可以愉快地返回任何其他响应和错误代码组合。
从流中可以看到,无论如何,要返回500个响应,URL必须是有效的。
https://stackoverflow.com/questions/25429232
复制相似问题