3

我正在部署一个 Django 网页,我喜欢 Django Debug 404 页面和出现 python 错误时的 Django 页面。但是,这些不适用于正在上网的网页。所以我做了一个自定义的404页面。但是,对于我和我的 IP 地址,我仍然希望 Django 调试页面出现。如果我将 Debug 设置为 false,有没有办法做到这一点?

4

1 回答 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 和异常。

请参阅有关错误报告日志记录的文档(在 1.3 中添加了日志记录框架)

于 2011-09-21T07:01:31.923 回答