0

使用Django 1.11,我已经定义了一个自定义的404处理器,在我的主要URLs.py写着:Django的:通过HTTP404在自定义404错误处理程序通过(“味精”)显示错误消息

handler404 = 'myApp.views.myError' 

的功能myError()看起来是这样的:当我打电话raise Http404("My msg")

def myError(request): 
    #errorMsg=request.error_404_message 
    return render(request,'404.html') 

此功能。 但是,当我试图让由Http404调用(见myError注释部分),我的代码崩溃传递的消息:

服务器错误(500)

我怎样才能再拿到错误信息?我读了很多关于它的问题like this one,但大多数答案指的是在html文件中获取消息,而不是在自定义的python错误处理函数中。

编辑:的问题是,我不能看到调试页面,因为当myError()被调用的错误显然只是发生,这只会发生,如果debug=False中的设置。

+1

而不是说'服务器错误(500)',你应该从你的日志/错误邮件中包含完整的回溯。 – Alasdair

+0

@Alasdair见编辑。是否有另一个可能看到调试页面?我在终端没有收到错误 – black

+0

你是对的,你看不到黄色的错误页面,因为你需要设置'DEBUG = False'来测试自定义404页面。我期望在日志中看到回溯,或发送给网站管理员的电子邮件。 – Alasdair

回答

1

该请求默认没有error_404_message属性,因此request.error_404_message会给您一个错误。

The answer you linked to将它设置为一个属性,但我不明白为什么你会想在Django 1.9+中这样做,因为你已经有权访问视图中的异常。

自定义视图的签名应该是:

def myError(request, exception, template_name='404.html'): 
    ... 

您现在可以访问exception。您可以查看default page not found view以了解如何从异常中提取消息。

相关问题