2

J'ai créé une nouvelle application pour mon projet webapp en utilisant ./manage.py startapp webapplogin. Tous les modèles fonctionnent mais maintenant je continue à obtenir l'objet 'WSGIRequest' n'a aucun attribut 'session' chaque fois que j'essaie de faire quelque chose avec une demande comme la déconnexion (demande) ou la connexion (demande, utilisateur).L'objet 'WSGIRequest' n'a pas d'attribut application 'session' multiple

Je ne comprends pas ce que la question est après environ 6 heures de débogage/googler ...

Ai-je besoin de revenir à faire la webapp tout en webapp au lieu d'essayer de diviser le projet en applications? Le templating fonctionne bien ainsi que de relier en ce moment, juste le pas d'attribut « session » ...

structure du projet ci-dessous

app_project 
    app_backend 
     settings.py 
     urls.py 
     wsgi.py 
    static 
     static_files 
    webapp 
     templates 
      webapp 
       base.html 
       home.html 
     admin.py 
     apps.py 
     models.py 
     tests.py 
     urls.py 
     views.py 
    webapplogin 
     templates 
      login 
       login.html 
     admin.py 
     apps.py 
     models.py 
     tests.py 
     urls.py 
     views.py 

paramètres du projet ci-dessous

INSTALLED_APPS = [ 
'webapplogin.apps.LoginConfig', 
'webapp.apps.WebappConfig', 
'django.contrib.admin', 
'django.contrib.auth', 
'django.contrib.contenttypes', 
'django.contrib.sessions', 
'django.contrib.messages', 
'django.contrib.staticfiles', 
'django.contrib.gis', 
'django.contrib.humanize', 
] 

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

ROOT_URLCONF = 'app_backend.urls' 

TEMPLATES = [ 
{ 
    'BACKEND': 'django.template.backends.django.DjangoTemplates', 
    'DIRS': [], 
    'APP_DIRS': True, 
    'OPTIONS': { 
     'context_processors': [ 
      'django.template.context_processors.debug', 
      'django.template.context_processors.request', 
      'django.contrib.auth.context_processors.auth', 
      'django.contrib.messages.context_processors.messages', 
     ], 
    }, 
}, 
] 

WSGI_APPLICATION = 'app_backend.wsgi.application' 

Répondre

0

La raison pour laquelle cela se produit est parce que l'ordre du middleware est important. Pendant la requête, le middleware de session Django doit s'exécuter en premier afin d'ajouter l'objet session à la requête.

les opérations suivantes:

MIDDLEWARE = [ 
'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', 
'django.middleware.security.SecurityMiddleware', 
] 
1

actuellement sur 1.9, Django ne reconnaît pas le paramètre INTERGICIEL. Vous devez utiliser le paramètre MIDDLEWARE_CLASSES