Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django Middleware Error - Middleware changed for 1.7

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.
like image 273
Milo.D Avatar asked Apr 11 '17 08:04

Milo.D


2 Answers

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.

like image 115
Patrick Mutuku Avatar answered Nov 17 '22 07:11

Patrick Mutuku


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.

like image 43
Alasdair Avatar answered Nov 17 '22 07:11

Alasdair