Added JinjaTemplateRenderer

This commit is contained in:
Thomas Gak Deluen 2015-05-13 12:38:36 +01:00
parent 21cb808569
commit 1956948c15

View File

@ -200,6 +200,42 @@ class TemplateHTMLRenderer(BaseRenderer):
response.status_text.title())) response.status_text.title()))
class JinjaTemplateRenderer(TemplateHTMLRenderer):
"""
Renders data to HTML for use with the Jinja2 template engine.
The template name is determined by (in order of preference):
1. An explicit .template_name set on the response.
2. An explicit .template_name set on this class.
3. The return result of calling view.get_template_names().
"""
def render(self, data, accepted_media_type=None, renderer_context=None):
renderer_context = renderer_context or {}
view = renderer_context['view']
request = renderer_context['request']
response = renderer_context['response']
# add the current user to the context
# otherwise it won't be available in templates
renderer_context['user'] = request.user
# get template (jinja2)
if response.exception:
template = self.get_exception_template(response)
else:
template_names = self.get_template_names(response, view)
template = self.resolve_template(template_names)
# return the dict containing the context
# for jinja2 to process.
# Would throw a value error if a
# RequestContext was returned
return template.render(renderer_context)
# Note, subclass TemplateHTMLRenderer simply for the exception behavior # Note, subclass TemplateHTMLRenderer simply for the exception behavior
class StaticHTMLRenderer(TemplateHTMLRenderer): class StaticHTMLRenderer(TemplateHTMLRenderer):
""" """