0

使用 django 1.11,我定义了一个自定义 404 处理程序,通过在我的主要 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 中的注释部分),我的代码崩溃:

服务器错误 (500)

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

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

4

1 回答 1

1

请求默认没有error_404_message属性,所以request.error_404_message会给你一个错误。

您链接到的答案将其设置为属性,但我不明白您为什么要在 Django 1.9+ 中执行此操作,因为您已经可以访问视图中的异常。

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

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

您现在可以访问exception. 您可以查看默认页面未找到视图,了解它如何从异常中提取消息。

于 2017-06-15T14:29:46.410 回答