【问题标题】:Django admin error 'WSGIRequest' object has no attribute 'userDjango 管理错误“WSGIRequest”对象没有属性“用户”
【发布时间】:2018-06-14 11:19:02
【问题描述】:

我正在练习 Django,当我尝试转到 http://localhost/admin/ 时出现以下错误,我检查了 settings.py 并且 MIDDLEWARE_CLASSES 确实存在,是否还有其他原因导致我收到此消息。

    AttributeError at /admin/
'WSGIRequest' object has no attribute 'user'
Request Method: GET
Request URL:    http://localhost/admin/
Django Version: 2.0
Exception Type: AttributeError
Exception Value:    
'WSGIRequest' object has no attribute 'user'
Exception Location: /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/django/contrib/admin/sites.py in has_permission, line 186
Python Executable:  /usr/local/bin/python3
Python Version: 3.6.1
Python Path:    
['/Users/yasserhussain/learning_site',
 '/Library/Frameworks/Python.framework/Versions/3.6/lib/python36.zip',
 '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6',
 '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/lib-dynload',
 '/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages']
Server time:    Thu, 4 Jan 2018 00:17:34 +0000

设置中 MIDDLEWARE 的内容

MIDDLEWARE = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
)

【问题讨论】:

标签: python django


【解决方案1】:

Django 2.0 在 MIDDLEWARE_CLASSES changelog, last item 中放弃了对旧式中间件类的支持

如果您只使用标准中间件,升级很简单,Upgrading pre-Django 1.10-style middleware 中对此进行了说明。 通常只需将MIDDLEWARE_CLASSES 重命名为MIDDLEWARE 并删除'django.contrib.auth.middleware.SessionAuthenticationMiddleware' 就足够了。

您还必须确保django.contrib.auth is installed properly。除了您已经拥有的SessionMiddleware,您还应该将django.contrib.auth.middleware.AuthenticationMiddleware 添加到MIDDLEWARE 设置中。

【讨论】:

  • 谢谢@Jieter,我已经按照你上面说的做了,但我仍然收到同样的错误信息:|
  • 您能否编辑您的问题以包含 MIDDLEWARE 的内容?
  • 我已经上传了这个
  • 我已经更新了我的答案,并附上了关于添加django.contrib.auth.middleware.AuthenticationMiddleware的说明
【解决方案2】:

我原来的 Django 版本是 1.9 。升级到 2.0.5 版后,我遇到了同样的问题。 将 MIDDLEWARE_CLASSES 重命名为 MIDDLEWARE 并在 settings.py 中删除 'django.contrib.auth.middleware.SessionAuthenticationMiddleware' 完成了这项工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多