在我的一个观点中,我有代码:
raise Http404
当DEBUG=False
Django呈现模板500.html
而不是正确的404.html
时!我不明白为什么!
编辑:DEBUG=True
我得到标准版(由Django编写)
Page not Found (404)
You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard 404 page.
更重要的是,在runserver
控制台中,我清楚地看到了404
代码。 相反,在控制台中设置DEBUG=False
时,我得到500
!!这太奇怪了。
编辑2:如果我在提出Http404
之前发出了一份打印声明,我会在DEBUG=True
时看到该消息,但在False
时却看不到消息!
编辑3:我可以确认,当DEBUG=False
语句raise Http404
从未到达时。怎么可能?
实际上,每个网址都有DEBUG=False
,我得到500.虽然DEBUG=True
,但这不会发生。它怎么可能?它应该运行相同。我开始认为这是一个Django错误。
答案 0 :(得分:4)
debug = false的错误可能是由于allowed_hosts设置造成的。
请参阅:Setting DEBUG = False causes 500 Error
这是django 1.5中的新内容。
生产中需要ALLOWED_HOSTS
新的ALLOWED_HOSTS设置验证请求的主机头和 防止主机中毒攻击。现在需要此设置 每当DEBUG为False时,或者django.http.HttpRequest.get_host() 将提出SuspiciousOperation。有关详细信息,请参阅完整 新设置的文档。
https://docs.djangoproject.com/en/1.5/releases/1.5/#allowed-hosts-required-in-production