我正在部署一个 Django 网页,我喜欢 Django Debug 404 页面和出现 python 错误时的 Django 页面。但是,这些不适用于正在上网的网页。所以我做了一个自定义的404页面。但是,对于我和我的 IP 地址,我仍然希望 Django 调试页面出现。如果我将 Debug 设置为 false,有没有办法做到这一点?
问问题
2699 次
1 回答
7
您可以通过在 urlconf 中设置 handler404 来为 404 定义自己的处理程序视图。默认的 handler404 是django.views.defaults.page_not_found
,它基本上只是渲染404.html
模板。
如果你把它放在你的 urlconf 中,它将显示某个 IP 的“技术”404 响应(漂亮的黄页),并为其他 IP 使用 Django 的默认 404 生产视图:
import sys
from django.views.debug import technical_404_response
from django.views.defaults import page_not_found
def handler404(request):
if request.META['REMOTE_ADDR'] == 'YOUR_IP_ADDRESS':
exc_type, exc_value, tb = sys.exc_info()
return technical_404_response(request, exc_value)
else:
return page_not_found(request)
我建议您为 404 错误设置正确的日志记录。对于您可以指定的规则,Django 可以为您发送电子邮件或记录在您的生产环境中发生的 404 和异常。
于 2011-09-21T07:01:31.923 回答