使用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
时才会发生。
答案 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如何从异常中提取消息。