我正在尝试使用@login_required
装饰器,但是我得到了一个'WSGIRequest' object has no attribute 'user'
属性错误。我在上面有import语句from django.contrib.auth.decorators import login_required
,但仍然得到错误。当我从views.py中的def profile(request)
前面删除@login_required
时,问题就消失了,但当我将它放在那里时,问题仍然存在。
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',
)
您需要启用“django.contrib.auth.middleware.AuthenticationMiddleware”,因为它设置了request.user。您还应该启用另一个默认中间件,否则您将遇到其他问题。
OP的问题可能已经得到了回答,但是我来到这里是因为我在一个已经启用了AuthenticationMiddleware并且已经成功运行了一段时间的Django项目上遇到了这个错误。
问题是,我正在使用另一个URL访问服务器,而该URL不是在
ALLOWED_HOSTS
中配置的。这引发了一个可疑的操作异常,我们的错误500处理程序试图将其路由到Django CMS页面。不幸的是,由于错误发生在请求的早期,并不是所有的中间件都被处理过,而且
user
和current_page
还没有添加到request
对象中,因此Django CMS在尝试呈现页面时死于多处创伤,掩盖了过程中的真正错误。我不得不使用
runserver
并插入pdb
断点来调试它,因为在mod_wsgi
下运行使得不可能使用交互式调试器,而且回溯跟踪也没有用处。相关问题 更多 >
编程相关推荐