미들웨어 클래스를 정의했습니다. 그리고 설정에서 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에서
보기에서 TemplateResponse를 반환 하시겠습니까? –
django 1.3을 실행하고 있습니까? – MattoTodd