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