/admin/ 'WSGIRequest' 对象的 AttributeError 没有属性 'user'
Posted
技术标签:
【中文标题】/admin/ \'WSGIRequest\' 对象的 AttributeError 没有属性 \'user\'【英文标题】:AttributeError at /admin/ 'WSGIRequest' object has no attribute 'user'/admin/ 'WSGIRequest' 对象的 AttributeError 没有属性 'user' 【发布时间】:2019-10-20 06:48:34 【问题描述】:这是我遇到的错误,我无法获得管理员登录屏幕。
/admin/ 处的 AttributeError 'WSGIRequest' 对象没有属性 'user' 请求方法:GET 请求网址:http://127.0.0.1:8000/admin/ Django 版本:2.1.2 异常类型:属性错误 异常值: 'WSGIRequest' 对象没有属性 'user' 异常位置:C:\Users\Neptune\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\contrib\admin\sites.py in has_permission,第 186 行 Python 可执行文件:C:\Users\Neptune\AppData\Local\Programs\Python\Python37-32\python.exe Python版本:3.7.3 Python 路径: ['C:\Users\Neptune\Desktop\MyMusic', 'C:\Users\Neptune\AppData\Local\Programs\Python\Python37-32\python37.zip', 'C:\Users\Neptune\AppData\Local\Programs\Python\Python37-32\DLLs', 'C:\Users\Neptune\AppData\Local\Programs\Python\Python37-32\lib', 'C:\Users\Neptune\AppData\Local\Programs\Python\Python37-32', 'C:\Users\Neptune\AppData\Local\Programs\Python\Python37-32\lib\site-packages', 'C:\Users\Neptune\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django-1.9.1-py3.7.egg'] 服务器时间:2019年6月4日星期二17:37:30 +0000
【问题讨论】:
settings.py
可能有问题,你能在这个问题中也发布吗
捎带@SammyJ 的评论——user
属性通常由中间件(特别是django.contrib.auth.middleware.AuthenticationMiddleware
)添加到请求中,因此您的settings.py
的MIDDLEWARE
将是第一个看。 (另见docs.djangoproject.com/en/2.2/ref/request-response/…)
MIDDLEWARE_CLASSES = ['django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf。 CsrfViewMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.auth.middleware.SessionAuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',] @Sammy J 这是我的 setting.py 中间件代码部分。
【参考方案1】:
根据您的评论,您似乎在设置中犯了错误,在 Django 2.0 及更高版本中,MIDDLEWARE_CLASSES
更改为仅MIDDLEWARE
,因此中间件应该像
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
在文档中链接,check this,请注意,如果您是 django 新手,那么从文档中学习是很好的,有很多 django 教程太过时了。
你可以从这里开始gettting started page
【讨论】:
感谢您的支持@Sammy J。但我使用的 Django 版本是 1.9.1 而不是 2.0 你确定@Iswarian 因为我是你发布的错误日志,它显示 Django 版本 2.1.2 感谢您的大力支持。在将 middleware_classes 更改为中间件并从中间件设置中删除此行后得到修复:'django.contrib.auth.middleware.SessionAuthenticationMiddleware' 很高兴听到这个消息,你能接受这个答案吗,也许将来遇到同样问题的人可以从中受益:)以上是关于/admin/ 'WSGIRequest' 对象的 AttributeError 没有属性 'user'的主要内容,如果未能解决你的问题,请参考以下文章
Django admin 中抛出 'WSGIRequest' object has no attribute 'user'的错误
Django 'WSGIRequest' 对象没有属性 'Post'