Django Middleware Error - Middleware changed for 1

2019-04-22 15:48发布

问题:

Whenever I run my local server with my django project I am getting a warning and an error message saying that in Django 1.7 the global middleware classes were changed - even though I am using 1.8. My blog, at http://127.0.0.1:8000/, loads fine, but when I try to load the admin site I get AttributeError at /admin/ 'WSGIRequest' object has no attribute 'user', which as far as I can tell is to do with the Middleware. Thanks for your help in advance

EDIT: My middleware:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Error message:

Warnings
?: (1_7.W001) Middleware_Classes is not set.
    Hint: Django 1.7 changed the global defaults for the middleware_classes. django.contrib.auth.middleware.AuthenticationMiddleware, django.contrib.sessions.middleware.SessionMiddleware, and django.contrib.messages.middleware.MessageMiddleware, were removed from the defaults. If your project needs this middleware then you should configure this middleware.

回答1:

The MIDDLEWARE setting was introduced in Django 1.10. If you are using Django 1.9 or earlier it will have no effect, and you should be using the MIDDLEWARE_CLASSES setting instead.

Make sure you are using the correct version of the docs (e.g. Django 1.8, Django 1.11), so that you follow the correct instructions.



回答2:

I created my project using django 1.11 but when I transferred the files to the web server, I encountered errors with fcgi which forced me to downgrade to 1.8. Therefore the error came up because admin was now expecting MIDDLEWARE_CLASSES instead of MIDDLEWARE. Changing that solved the error.