From e53495ba3352c2c0fdb6178f2b333c30cb6b5d46 Mon Sep 17 00:00:00 2001 From: Aymeric Augustin Date: Sun, 14 Dec 2014 18:29:15 +0100 Subject: [PATCH] Preserved context class in inclusion_tag. Previously, when a template was rendered with RequestContext, inclusion tags were rendered with a plain context, losing additional information available in the RequestContext. The (admittedly bizarre) implementation of RequestContext.new() has the side-effect of not running template context processors, making this change backwards-compatible. --- django/template/base.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/django/template/base.py b/django/template/base.py index 8a0b638a54..6594af1e1a 100644 --- a/django/template/base.py +++ b/django/template/base.py @@ -1257,7 +1257,7 @@ class Library(object): else: raise TemplateSyntaxError("Invalid arguments provided to assignment_tag") - def inclusion_tag(self, file_name, context_class=Context, takes_context=False, name=None): + def inclusion_tag(self, file_name, takes_context=False, name=None): def dec(func): params, varargs, varkw, defaults = getargspec(func) @@ -1277,13 +1277,7 @@ class Library(object): else: t = context.engine.get_template(file_name) self.nodelist = t.nodelist - new_context = context_class(_dict, **{ - 'autoescape': context.autoescape, - 'current_app': context.current_app, - 'use_l10n': context.use_l10n, - 'use_tz': context.use_tz, - 'engine': context.engine, - }) + new_context = context.new(_dict) # Copy across the CSRF token, if present, because # inclusion tags are often used for forms, and we need # instructions for using CSRF protection to be as simple