Django自定义500错误模板不显示request.user

标签 django django-templates django-allauth django-1.6 django-errors

我正在实现自定义 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/

相关文章:

python - Django 全授权 Slack : Redirect URL as https instead of http and Social Network Login Failure

python - Django 和 Rails - 在 Windows 环境中我应该期待什么?

python - Django 序列化器类相互引用

django - 扩展 Django 中的默认用户模型

python - Django-限制用户访问url

python - Django登录后如何在主页显示用户名和姓氏

django allauth facebook本地开发

python - Django-ManyToMany表提取了错误的信息

python - 快速列出 Django 项目的所有设置

Sorl-thumbnail 的 Django 模板语法错误