Создание middleware django

категория: Django
Давно просили написать про создание middleware в django, тут как раз небольшой пришлось писать, думаю будет хорошим примером. Что такое middleware django? Нужно просто себе представить, что на глобальном уровне мы можем видоизменять запрос к серверу и ответ от сервера. Я буду видоизменять ответ с помощью метода process_response(). Итак начнем создание: 1. Нужно определить модуль в котором он будет храниться у меня это "core", если создаете новый не забудте добавить его INSTALLED_APPS 2. Создаем в этом модуле питоновский файл с любым названием, но лучше middleware.py 3. Создаем в middleware.py обычный питоновский класс "MyClass" 4. Подключаем нашу middleware в MIDDLEWARE_CLASSES:
MIDDLEWARE_CLASSES = (  
    'core.middleware.MyClass',  
    'django.middleware.common.CommonMiddleware',  
    ...
)  
5. Пишем свой миддлвар. Мне нужно было при ajax запросе, если ответ сервера - это редирект, то подменить ему код статуса. А то там беда с Jquery, оно возвращает 200 вместо 302:
from django.http import HttpResponseRedirect
#
#
class MyClass(object):
    def process_response(self, request, response):
        if request.is_ajax():
            if type(response) == HttpResponseRedirect:
                response.status_code = 278
        return response
Думаю это довольно исчерпывающе по данной тематике.


blog comments powered by Disqus