故障排除' WSGIRequest'对象没有属性'用户'?

时间:2012-03-06 07:46:16

标签: python django

我正在尝试使用@login_required装饰器,但我得到'WSGIRequest' object has no attribute 'user' AttributeError。我在顶部有导入语句from django.contrib.auth.decorators import login_required,但我仍然收到错误。当我在views.py中从@login_required前面删除def profile(request)时,问题就会消失,但当我把它放在那里时问题仍然存在。

来自setting.py的中间件类

MIDDLEWARE_CLASSES = (
    #~ 'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    #~ 'django.middleware.csrf.CsrfViewMiddleware',
    #~ 'django.contrib.auth.middleware.AuthenticationMiddleware',
    #~ 'django.contrib.messages.middleware.MessageMiddleware',
)

2 个答案:

答案 0 :(得分:10)

您需要启用'django.contrib.auth.middleware.AuthenticationMiddleware',因为它设置了request.user。您还应该启用其他默认中间件,否则您将遇到其他问题。

答案 1 :(得分:3)

OP的问题可能会得到解答,但我到这里是因为我在已经启用了AuthenticationMiddleware的Django项目中遇到了这个错误,并且已经成功运行了一段时间。

问题原因是我使用的是另一个访问服务器的网址,该网址未在ALLOWED_HOSTS中配置。这是抛出SuspiciousOperation异常,我们的Error 500处理程序试图将其路由到Django-CMS页面。

不幸的是,由于错误发生在请求的早期,并非所有中间件都已处理完毕,usercurrent_page尚未添加到request对象中,因此当尝试渲染页面时,Django-CMS死于多处伤口,掩盖了过程中的真实错误。

我必须使用runserver并插入pdb个断点来调试它,因为在mod_wsgi下运行会导致无法使用交互式调试器,并且回溯无效。< / p>