我正在实现自定义 404 和 500 模板,但是虽然 404.html 模板似乎可以正常返回 request.user.is_authenticated,但 500.html 模板无法返回任何内容。我还检查了 request.user,它在 500 页面上只是空白。
这很奇怪,因为当我触发 500 错误时,我收到了预期的错误报告电子邮件,并且它显然在请求分割中正确定义了 USER。这是我在views.py中使用的代码:
def handler404(request):
response = render_to_response('404.html', {},
context_instance=RequestContext(request))
response.status_code = 404
return response
def handler500(request):
response = render_to_response('500.html', {},
context_instance=RequestContext(request))
response.status_code = 500
return response
我想知道后台(可能在 RequestContext 中)是否有什么东西将 500 与 404 处理不同?我应该提到我也在使用 django-guardian,尽管我认为这不会影响任何情况。有什么想法吗?
编辑: This comment声称“500 模板不会呈现 request.user,因为它报告 500 服务器错误,因此服务器无法提供任何服务。”有谁知道解决这个问题的方法吗?似乎应该有一个,因为正如我所说,我在错误报告电子邮件中收到的日志清楚地包含带有用户名的请求对象。
编辑 2: 现在我想知道它是否与 django-allauth 有关 - 我也在使用它。
最佳答案
我明白了!我必须将以下行添加到 urls.py:
handler500 = "mysite.views.handler500"
非常奇怪的是,404 在没有等效线路的情况下工作得很好,但 500 的行为确实很奇怪。
关于Django自定义500错误模板不显示request.user,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26043211/