Промежуточное программное обеспечение Django process_template_response не сработало - PullRequest
1 голос
/ 14 марта 2012

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

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

Какие шаги мне нужны для подготовки преформы к визуализациипредставление в 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

1 Ответ

0 голосов
/ 06 февраля 2013

Я думаю, вам, возможно, придется вернуть TemplateResponse или аналогичный для промежуточного программного обеспечения, чтобы направить представление к другому шаблону, возвращая параметр ответа или другой экземпляр HTTPResponse, если нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...