2012-03-14 4 views
1

У меня есть TemplateView, который возвращает объект TemplateResponse в промежуточном продукте process_template_response, но позже никогда не запускается.Django middleware process_template_response not triggerd

Когда я изменяю метод промежуточного программного обеспечения в process_response и preform render() на TemplateResponse, запускается метод middleware, и страница визуализируется.

Какие шаги мне нужно для преформы для визуализации вида в process_template_response?

Вид:

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 является не оп.

 Смежные вопросы

  • Нет связанных вопросов^_^