Разбираюсь в middleware, прочел доки, пару статей. Теория понятна в общих чертах - что процессы от запроса до ответа можно переопределять… Решил сделать нечто совсем простое в middleware, добавить в конец страницы слово. Т.к. понимание функционирования middleware ко мне еще не прибыло, ткнул пальцем в небо:
class CoolMiddleware(object):
def process_response(self, request, response):
content = response.content
content.replace('</body>', 'CoolMiddlweare </body>')
return request
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.cool.CoolMiddleware',
)
В браузер передается traceback:
Traceback (most recent call last):
File “/usr/local/lib/python2.6/dist-packages/django/core/servers/basehttp.py”, line 280, in run
self.result = application(self.environ, self.start_response)
File “/usr/local/lib/python2.6/dist-packages/django/core/servers/basehttp.py”, line 674, in __call__
return self.application(environ, start_response)
File “/usr/local/lib/python2.6/dist-packages/django/core/handlers/wsgi.py”, line 252, in __call__
response = middleware_method(request, response)
File “/usr/local/lib/python2.6/dist-packages/django/middleware/common.py”, line 84, in process_response
if response.status_code == 404:
AttributeError: ‘WSGIRequest’ object has no attribute ‘status_code’
На этой задаче хочу разобраться в middleware. В чем ошибки? Как правильно реализовать эту задачу?