Объект WSGIRequest не имеет атрибута "сеанс" при обновлении с django 1.3 до 1.9
Подобно этому вопросу Объект WSGIRequest не имеет атрибута 'session'
Но мои классы MIDDLEWARE находятся в правильном порядке.
INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.messages',
'django.contrib.staticfiles',
'membership',
'treebeard',
'haystack',
'reversion',
]
MIDDLEWARE = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Я перенаправляю логин
url(r'^$', RedirectView.as_view(url='login/')),
url(r'^login/$', 'membership.views.loginView', name='login'),
а затем
def loginView(request):
a = request.session
Выдает ошибку
Ответы
Ответ 1
MIDDLEWARE
- новый параметр в 1.10, который заменит старый MIDDLEWARE_CLASSES
.
Так как вы в настоящее время на 1.9, Django не распознает параметр MIDDLEWARE
. Вместо этого вы должны использовать MIDDLEWARE_CLASSES
:
MIDDLEWARE_CLASSES = [
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
Ответ 2
Django 2.0
Вы можете попробовать это в своих settings.py, MIDDLEWARE_CLASSES = [....]:
Значение MIDDLEWARE_CLASSES устарело в Django 1.10 и удален в Django 2.0.
Класс SessionAuthenticationMiddleware удален. Он не предусматривал никаких функциональность, поскольку аутентификация сеанса безоговорочно включена в Django 1.10.
Ответ 3
Проверьте порядок промежуточного программного обеспечения, если вы пытаетесь получить к нему доступ на некоторых промежуточных продуктах, перечисленных выше промежуточного ПО сеанса, вы получите эту ошибку.
Ответ 4
Эта ошибка также может быть выдана, когда у вас есть опечатка. т.е.
request.sesion ...
вместо
request.session ...