Создан промежуточный класс, но не выполнен process_template_response - PullRequest
0 голосов
/ 29 сентября 2011

Я определил класс промежуточного программного обеспечения. и я добавил его в атрибут middleware_classes в настройке. Когда поступает запрос, создается класс промежуточного программного обеспечения (отладчик ловит код, когда точка останова находится в классе CommonFiilter (): line)

Теперь я ожидаю, что функция def process_template_response (self, request, response): будет вызвана. У меня есть точка отладки внутри функции, и отладчик никогда не прерывает выполнение. Отладчик, тем не менее, перехватывает выполнение в строке, где определены имя функции и параметры. Это класс:

class CommonFilter():#<---- debugger breaks here
def process_template_response(self, request, response): #<--- debugger breaks here
    if response.template_name=='store/index2.html': #<--- NOT HERE (or after this line)
        catnames=getCategories()
        response.context_data.update({'catnames':catnames,'user':request.GET.get(key='user',default=None)})
    return response

Также попробовал это:

class CommonFilter():#<---- debugger breaks here
def process_template_response(self, request, response):#<---- debugger breaks here
    if response.template_name=='store/index2.html':#<--- NOT HERE (or after here)
        catnames=getCategories()
        response.context_data['catnames']=catnames
        response.context_data['user']=request.GET.get(key='user',default=None)
    return response

На всякий случай, это настройка переменной MIDDLEWWARE_CLASSES:

MIDDLEWARE_CLASSES = (
                  'store.models.CommonFilter',
'django.middleware.csrf.CsrfViewMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
)

store - приложение в этом проекте, и, конечно же, CommonFilter определен в models.py.

Почему функция process_template_response не выполняется?

Спасибо за ваше время и заботу.

1 Ответ

1 голос
/ 29 сентября 2011

из документов :

process_template_response () будет вызван только если ответ Экземпляр имеет метод render (), указывающий, что это TemplateResponse.

...