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

Django: Display error message passed by Http404("msg") in custom 404 error handler

使用 django 1.11,我定义了一个自定义的 404 处理程序,通过在我的 main URLs.py:

中编写
handler404 = 'myApp.views.myError'

函数 myError() 如下所示:

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

当我调用 raise Http404("My msg") 时,此函数起作用。 但是,当我尝试获取 Http404 调用传递的消息时(请参阅 myError 中的注释部分),我的代码崩溃了:

Server Error (500)

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

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

请求默认没有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 以了解它如何从异常中提取消息。