Change template context generation in TemplateHTMLRenderer by rfleschenberg · Pull Request #4236 · encode/django-rest-framework (original) (raw)
Make TemplateHTMLRenderer
more subclass-friendly. Refs #4230.
- Change the name of
resolve_context()
toget_template_context()
. - Pass the renderer context to this method, to give subclasses more flexibility
when overriding.
This allows users to write code like this:
class ViewInContextHTMLRenderer(TemplateHTMLRenderer):
def get_template_context(self, data, renderer_context):
context = super().get_template_context(data, renderer_context)
context['view'] = renderer_context['view']
return context
Or maybe even:
class ExtraContextHTMLRenderer(TemplateHTMLRenderer):
def get_template_context(self, data, renderer_context):
context = super().get_template_context(data, renderer_context)
context.update(renderer_context['extra_template_context'])
return context
Currently, you have to override and reimplement the whole render()
method instead.
This change does break compatibility with existing code that touches this interface. As far as I see, the interface was not documented. If desirable, we could add a compatibility shim.