django2 登录的时候包错误 'WSGIRequest' object has no attribute 'session'

在登录的时候 调用django自带的login方法:from django.contrib.auth import login, authenticate

user = authenticate(username=username, password=password)
login(request, user)
在这句话 的时候抛出了 'WSGIRequest' object has no attribute 'session' 的错误,网上查了 说是settings中 middle名字不对,但我查了一下我的是对的 名字是:MIDDLEWARE_CLASSES,求各位指点 我用的版本是 django2.1.1 谢谢各位

我的 classes是这样的:
MIDDLEWARE_CLASSES = (

'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',
'django.middleware.security.SecurityMiddleware',

)

汪汪一只猫
浏览 533回答 1
1回答

蝴蝶不菲

在调用login(request, user)时,会去访问 request.session属性,而request.session是在 django.contrib.sessions.middleware.SessionMiddleware 这个中间件初始化所以问题是中间件没调用到, 导致request 没有 session这个属性原因是在django2.0 中间件配置变量名是 MIDDLEWARE 不再是 MIDDLEWARE_CLASSES 了所以正确配置是: MIDDLEWARE = ( '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', 'django.middleware.security.SecurityMiddleware', )
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python