Потому что, как я уже сказал, MIDDLEWARE - это то, что нужно использовать, а MIDDLEWARE_CLASSES был удален.

овил мою версию Django с1.11.5 в2.0 и я пытаюсь решить другой устаревший элемент.

Однако, даже если моя таблица стилей CSS / bootstrap не работает, я не могу войти в свое программное обеспечение Django. У меня есть эта проблема:

'WSGIRequest' object has no attribute 'session'

Это весь Traceback:

Environment:


Request Method: POST
Request URL: http://127.0.0.1:8000/Authentification/Login/

Django Version: 2.0
Python Version: 3.6.2
Installed Applications:
['Institution',
 'django.conf.urls',
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'bootstrapform',
 'django_countries',
 'chartit',
 'Configurations',
 'Home',
 'Authentication',
 'Identity',
 'rest_framework',
 'Fiscal',
 'bootstrap4']
Installed Middleware:
[]



Traceback:

File "/Users/valentinjungbluth/Desktop/DatasystemsCORE3.6/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner
  35.             response = get_response(request)

File "/Users/valentinjungbluth/Desktop/DatasystemsCORE3.6/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  128.                 response = self.process_exception_by_middleware(e, request)

File "/Users/valentinjungbluth/Desktop/DatasystemsCORE3.6/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response
  126.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/Users/valentinjungbluth/Desktop/DatasystemsCORE3.6/lib/python3.6/site-packages/django/views/decorators/csrf.py" in wrapped_view
  54.         return view_func(*args, **kwargs)

File "/Users/valentinjungbluth/Desktop/Django/DatasystemsCORE/DatasystemsCore/DatasystemsCORE/Authentication/views.py" in Login
  26.                 login(request, user)  

File "/Users/valentinjungbluth/Desktop/DatasystemsCORE3.6/lib/python3.6/site-packages/django/contrib/auth/__init__.py" in login
  130.     if SESSION_KEY in request.session:

Exception Type: AttributeError at /Authentification/Login/
Exception Value: 'WSGIRequest' object has no attribute 'session'

В моем приложении аутентификации:

# views.py file
#-*- coding: utf-8 -*-

from django.contrib.auth import authenticate, login, logout
from .forms import ConnexionForm
from django.shortcuts import render, reverse, get_object_or_404, redirect
from django.http import HttpResponseRedirect, HttpResponse
from .models import LoggedUsers

from API_GED import Logger

import datetime
from django.views.decorators.csrf import csrf_exempt,csrf_protect


@csrf_exempt
def Login(request):
    error = False

    if request.method == "POST":
        form = ConnexionForm(request.POST)
        if form.is_valid():
            username = form.cleaned_data["username"]
            password = form.cleaned_data["password"]
            user = authenticate(username=username, password=password)  # Nous vérifions si les données sont correctes
            if user:  # Si l'objet renvoyé n'est pas None
                login(request, user)  

                response = redirect('Homepage')

                return response

            else: # sinon une erreur sera affichée
                error = True

    else:
        form = ConnexionForm()

    return render(request, 'Authentication_Homepage.html', locals())


def Logout(request):

    logout(request)

    return redirect(reverse('Choice'))


def ConnectedUsers(request) :

    logged_users = LoggedUsers.objects.all()
    print (logged_users)

    logged_users_number = LoggedUsers.objects.all().count()

    context = {
        "logged_users":logged_users,
        "logged_users_number":logged_users_number,
    }

    return render(request, "Authentication_LoggedUsers.html", context)

Мой файл models.py:

from django.db import models
from django.contrib.auth.models import User
from django.contrib.auth.signals import user_logged_in, user_logged_out 

# class UserProfile(models.Model):
#     user   = models.OneToOneField(User)
#     avatar = models.ImageField(upload_to='/images/')

class LoggedUsers(models.Model):
    user = models.ForeignKey(User, primary_key=True, on_delete=models.CASCADE)

    def __str__(self):
        return '{}{}{}'.format(self.user.first_name + " ",  self.user.last_name  + " (", self.user.username + ")")

def login_user(sender, request, user, **kwargs):
        LoggedUsers(user=user).save()

def logout_user(sender, request, user, **kwargs):
        try:
            u = LoggedUsers.objects.get(user=user)
            u.delete()
        except LoggedUsers.DoesNotExist:
            pass

user_logged_in.connect(login_user)
user_logged_out.connect(logout_user)

В моем файле settings.py у меня есть MIDDLEWARE_CLASSES:

MIDDLEWARE_CLASSES = [
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.middleware.gzip.GZipMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',
    'DatasystemsCORE.middleware.OnlineNowMiddleware',
]

Любая идея ?

РЕДАКТИРОВАТЬ :

я написал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',
]

Кажется, работает!

 Alasdair05 дек. 2017 г., 11:11
Перед обновлением убедитесь, что Djangoработает без предупреждения об устаревании, Таким образом, вы получите полезное предупреждение оMIDDLEWARE_CLASSES быть устаревшим, а не неясной ошибкойWSGIRequest.

Ответы на вопрос(2)

Решение Вопроса

ерсии 2.0. Это означает, что у вас нет промежуточного программного обеспечения вообще.

Вместо этого вы должны использовать настройку MIDDLEWARE; обратите внимание, что используется промежуточное программное обеспечение нового стиля, вам может понадобитьсяобновить свой класс промежуточного программного обеспечения.

 Essex05 дек. 2017 г., 10:54
Так почему же, если я создаю новый проект с Django 2.0, в settings.py есть MIDDLEWARE?
 Daniel Roseman05 дек. 2017 г., 11:03
Потому что, как я уже сказал, MIDDLEWARE - это то, что нужно использовать, а MIDDLEWARE_CLASSES был удален.

Ваш ответ на вопрос