我正在尝试使用@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',
)
答案 0 :(得分:10)
您需要启用'django.contrib.auth.middleware.AuthenticationMiddleware',因为它设置了request.user。您还应该启用其他默认中间件,否则您将遇到其他问题。
答案 1 :(得分:3)
OP的问题可能会得到解答,但我到这里是因为我在已经启用了AuthenticationMiddleware的Django项目中遇到了这个错误,并且已经成功运行了一段时间。
问题原因是我使用的是另一个访问服务器的网址,该网址未在ALLOWED_HOSTS
中配置。这是抛出SuspiciousOperation异常,我们的Error 500处理程序试图将其路由到Django-CMS页面。
不幸的是,由于错误发生在请求的早期,并非所有中间件都已处理完毕,user
和current_page
尚未添加到request
对象中,因此当尝试渲染页面时,Django-CMS死于多处伤口,掩盖了过程中的真实错误。
我必须使用runserver
并插入pdb
个断点来调试它,因为在mod_wsgi
下运行会导致无法使用交互式调试器,并且回溯无效。< / p>