5

我正在实现自定义 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,尽管我认为这不会影响此案中的任何内容。有任何想法吗?

编辑: 此评论声称“500 模板不会呈现 request.user,因为它报告了 500 服务器错误,因此服务器无法提供任何服务。” 有谁知道解决这个问题的方法?似乎应该有一个,因为就像我说的那样,我在错误报告电子邮件中收到的日志清楚地包含带有用户名的请求对象。

编辑2:现在我想知道它是否与django-allauth有关——我也在使用它。

4

1 回答 1

3

我想到了!我必须将以下行添加到 urls.py:

handler500 = "mysite.views.handler500"

很奇怪 404 在没有等效线路的情况下如何正常工作,但 500 的行为真的很奇怪。

于 2014-09-26T03:49:21.583 回答