Django:在自定义404错误处理程序中显示由Http404(“msg”)传递的错误消息

时间:2017-06-15 14:22:41

标签: python django http-status-code-404 extract-error-message

使用django 1.11,我通过写入我的主URLs.py来定义一个自定义404处理程序:

handler404 = 'myApp.views.myError'

函数myError()如下所示:

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

当我拨打raise Http404("My msg")时,此功能有效。 但是,当我尝试通过Http404调用传递消息时(请参阅myError中的注释部分),我的代码崩溃了:

  

服务器错误(500)

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

编辑:问题是,我看不到调试页面,因为错误显然只发生在调用myError()时才发生这种情况,只有在设置中debug=False时才会发生。

1 个答案:

答案 0 :(得分: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如何从异常中提取消息。