web-dev-qa-db-ja.com

Django 1.3から1.9にアップグレードする際、 'WSGIRequest'オブジェクトに属性 'session'がありません

この質問と同様 '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

エラーをスローします

14
Shawn Anderson

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',
]
25
knbk

Django 2.

Settings.pyでこれを試すことができます、MIDDLEWARE_CLASSES = [....]:

  • MIDDLEWARE_CLASSES= [...]を[〜#〜] middleware [〜#〜]= [...]に変更します

  • MIDDLEWARE = [...]リストからSessionAuthenticationMiddlewareを削除します。

MIDDLEWARE_CLASSES設定は、Django 1.10で廃止され、Django 2.0で削除されました。

SessionAuthenticationMiddlewareクラスは削除されました。 Django 1.10。ではセッション認証が無条件に有効になっているため、機能は提供されませんでした。

13
Slipstream

このエラーは、タイプミスがある場合にもスローされます。つまり.

request.sesion ... 

の代わりに

request.session ... 
0
Mitsjol

ミドルウェアの順序を確認します。セッションミドルウェアの上にリストされているいくつかのミドルウェアでミドルウェアにアクセスしようとすると、このエラーが発生します。

0
Thomas John