I need to modify response object in middleware, so i have added 'myproject.common.middlware.ResponseMiddleware'
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware', # order matters don't move
'django.middleware.gzip.GZipMiddleware', # order matters don't move
'django.middleware.locale.LocaleMiddleware', # order matters don't move
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'myproject.common.middleware.ResponseMiddleware',
)
However in my ResponseMiddleware, I have the code below:
class ResponseMiddleware(object):
def process_response(self, request, response):
if 'status_code' not in response:
response['status_code'] = 200
return response
However, response.status_code cannot be found in other middlewares such as django's CommonMiddleware. I use Django 1.4 and from the document, order to process_response is reversed order of the order defined in MIDDLEWARE_CLASSES. So I put mine to the very bottom.
and i get
AttributeError: 'dict' object has no attribute 'status_code' from other Middleware.
(*** this is related to WebSocket generates error in django common middleware)