我正在尝试覆盖TemplateView中的render_to_response方法,以便为HTTP状态包含reponse_class的附加参数,但无法使用:
class ErrorView(TemplateView):
''' Inserts http status code into response '''
status = None
def render_to_response(self, context, **response_kwargs):
if self.status is None:
raise ImproperlyConfigured("ErrorView requires definition of status")
return super(ErrorView,self).render_to_response(context,{'status': self.status})
class Error404View(ErrorView):
template_name = '404.html'
status = 404
render_to_response方法(来自TemplateResponseMixin)由三个参数定义:
def render_to_response(self, context, **response_kwargs)
但是,当TemplateView从get方法调用它时,它只传递上下文:
return self.render_to_response(context)
如何将response_kwargs传递给render_to_response?
答案 0 :(得分:1)
为什么不创建自己的ErrorTemplateView
并覆盖get
方法。由于您无法将get
方法用于TemplateView
用于您的用例。
class ErrorTemplateView(TemplateView):
status = None
def get(self, request, *args, **kwargs):
if self.status is None:
raise ImproperlyConfigured("ErrorTemplateView requires definition of status")
context = self.get_context_data(**kwargs)
return self.render_to_response(context, status=self.status)
顺便说一下,如果您需要自定义错误视图,是否从docs?
进行了检查