“WSGIRequest”对象没有“user”属性吗?

2024-04-19 04:37:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用@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',
)

Tags: djangonopyimportauthobject错误required
2条回答

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

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

问题是,我正在使用另一个URL访问服务器,而该URL不是在ALLOWED_HOSTS中配置的。这引发了一个可疑的操作异常,我们的错误500处理程序试图将其路由到Django CMS页面。

不幸的是,由于错误发生在请求的早期,并不是所有的中间件都被处理过,而且usercurrent_page还没有添加到request对象中,因此Django CMS在尝试呈现页面时死于多处创伤,掩盖了过程中的真正错误。

我不得不使用runserver并插入pdb断点来调试它,因为在mod_wsgi下运行使得不可能使用交互式调试器,而且回溯跟踪也没有用处。

相关问题 更多 >