Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 25, 2013 13:09:42

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

middleware - непонятное поведение

Добрый день.
Вот начала разбираться с middleware и столкнулся со странностью в их работе.
Написал такой класс:

class my_middleware(object):
    def process_request(self, request):
        print 'process_request'
        return None
    def process_view(self, request, view_func, view_args, view_kwargs):
        print 'process_view'
        return None
    def process_template_response(self, request, response):
        print 'process_template_response'
        return response
    def process_response(self, request, response):
        print 'process_response'
        return response
    def process_exception(self, request, exception):
        print 'process_exception'
        return None
После загрузки страницы вижу такой вывод на консоль:
process_request
process_view
process_template_response
process_response
process_request
process_response
Получается что методы process_request и process_response вызываются по 2 раза, остальные по одному. После прочтения документации такое поведение кажется ошибочным, так ли это, или ошибаюсь я? Если это нормальное поведение, то не мог бы кто-нибудь объяснить для чего к примеру process_request вызывается дважды на один запрос?
Заранее спасибо.



Офлайн

#2 Июнь 25, 2013 14:39:38

Doberman26rus
От: Ставрополь
Зарегистрирован: 2009-03-16
Сообщения: 128
Репутация: +  1  -
Профиль   Отправить e-mail  

middleware - непонятное поведение

Сделай так и сразу поймешь что к чему

        
    def process_request(self, request):
        print request.META['PATH_INFO']
        print 'process_request'
        return None



подпись

Офлайн

#3 Июнь 25, 2013 15:46:57

mks
От:
Зарегистрирован: 2009-08-07
Сообщения: 80
Репутация: +  5  -
Профиль   Отправить e-mail  

middleware - непонятное поведение

Доберман, спасибо.
Действительно прояснилось, приходит ещё один запрос (/favicon.ico) который не виден в браузере, от этого ещё один вызов функций.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version