2011-09-29 4 views
0

미들웨어 클래스를 정의했습니다. 그리고 설정에서 middleware_classes 속성에 추가했습니다. 요청이 들어 오면 미들웨어 클래스가 만들어집니다 (중단 점이 클래스 CommonFiilter() : line에있을 때 디버거가 코드를 catch 함)미들웨어 클래스가 생성 중이지만 process_template_response가 실행되지 않았습니다.

이제 process_template_response (self, request, response) 함수가 다음을 기대합니다. 전화 받기. 함수 내부에 디버그 포인트가 있고 디버거는 결코 실행을 트랩하지 않습니다. 디버거는 함수 이름과 매개 변수가 정의 된 행에서 실행을 트랩합니다.

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', 
) 

저장소가이 프로젝트의 응용 프로그램입니다 :

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 변수입니다 : 또한이 시도

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 

: 이 클래스이다 ofcourse CommonFilter는 models.py에 정의되어 있습니다.

함수 process_template_response 함수가 실행되지 않는 이유는 무엇입니까?

시간과 친절한 관심에 감사드립니다. docs에서

+1

보기에서 TemplateResponse를 반환 하시겠습니까? –

+0

django 1.3을 실행하고 있습니까? – MattoTodd

답변

1

: 응답 인스턴스가 렌더링() 메소드가 있는지

process_template_response()는 단지 그것이 TemplateResponse임을 나타내는 호출된다.

관련 문제