2012-03-14 5 views
1

process_template_response 미들웨어에서 TemplateResponse 객체를 반환하는 TemplateView가 있지만 나중에 트리거되지 않습니다.Django 미들웨어 process_template_response 트리거되지 않음

process_response에서 미들웨어 메소드를 변경하고 TemplateResponse에서 preform render()를 실행하면 미들웨어 메소드가 트리거되고 페이지가 렌더링됩니다.

process_template_response에서 뷰를 렌더링하는 데 preform이 필요한 단계는 무엇입니까?

보기 :

class PageView(TemplateView): 

    template_name = 'flatpages/default.html' 

    def get(self, request, *args, **kwargs): 
      url = kwargs['url'] 
      if not url.endswith('/') and settings.APPEND_SLASH: 
        return HttpResponseRedirect(url + '/') 
      if not url.startswith('/'): 
        url = url + '/' 
        kwargs.update({'url': url}) 
      context = self.get_context_data(**kwargs) 
      return self.render_to_response(context) 

    def get_context_data(self, **kwargs): 
      url = kwargs.pop('url') 
      context = super(PageView, self).get_context_data(**kwargs) 
      page = get_object_or_404(ParentPage, url__exact=url, sites__id__exact=settings.SITE_ID) 
      context.update({'flatpage': page}) 
      return context 

class PageFallbackMiddleware(object): 
    def process_template_response(self, request, response): 
      print 'Triggered' 
      if response.status_code != 404: 
        return response 
      try: 
        return PageView.as_view()(request, url=request.path_info) 
      except Http404: 
        return response 
      except: 
        if settings.DEBUG: 
          raise 
        return response 

답변

0

나는 당신이 응답 매개 변수를 반환, 다른 템플릿로 라우팅 미들웨어에 대한보기를 TemplateResponse 또는 유사한를 반환 할 수 있습니다 생각 또는 다른 HttpResponse에 인스턴스는 어떤 조합입니다.