Fixed #15572 - include with "only" option discards context properties (such as autoescape)
Thanks to dfoerster for the report. git-svn-id: http://code.djangoproject.com/svn/django/trunk@15795 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
3349b95db6
commit
e9d2763947
|
@ -99,6 +99,14 @@ class Context(BaseContext):
|
||||||
self.dicts.append(other_dict)
|
self.dicts.append(other_dict)
|
||||||
return other_dict
|
return other_dict
|
||||||
|
|
||||||
|
def new(self, values=None):
|
||||||
|
"""
|
||||||
|
Returns a new Context with the same 'autoescape' value etc, but with
|
||||||
|
only the values given in 'values' stored.
|
||||||
|
"""
|
||||||
|
return self.__class__(dict_=values, autoescape=self.autoescape,
|
||||||
|
current_app=self.current_app, use_l10n=self.use_l10n)
|
||||||
|
|
||||||
class RenderContext(BaseContext):
|
class RenderContext(BaseContext):
|
||||||
"""
|
"""
|
||||||
A stack container for storing Template state.
|
A stack container for storing Template state.
|
||||||
|
|
|
@ -136,7 +136,7 @@ class BaseIncludeNode(Node):
|
||||||
values = dict([(name, var.resolve(context)) for name, var
|
values = dict([(name, var.resolve(context)) for name, var
|
||||||
in self.extra_context.iteritems()])
|
in self.extra_context.iteritems()])
|
||||||
if self.isolated_context:
|
if self.isolated_context:
|
||||||
return template.render(Context(values))
|
return template.render(context.new(values))
|
||||||
context.update(values)
|
context.update(values)
|
||||||
output = template.render(context)
|
output = template.render(context)
|
||||||
context.pop()
|
context.pop()
|
||||||
|
|
|
@ -1031,6 +1031,10 @@ class Templates(unittest.TestCase):
|
||||||
'include11': ('{% include "basic-syntax03" only with second=2 %}', {'first': '1'}, (' --- 2', 'INVALID --- 2')),
|
'include11': ('{% include "basic-syntax03" only with second=2 %}', {'first': '1'}, (' --- 2', 'INVALID --- 2')),
|
||||||
'include12': ('{% include "basic-syntax03" with first=1 only %}', {'second': '2'}, ('1 --- ', '1 --- INVALID')),
|
'include12': ('{% include "basic-syntax03" with first=1 only %}', {'second': '2'}, ('1 --- ', '1 --- INVALID')),
|
||||||
|
|
||||||
|
# autoescape context
|
||||||
|
'include13': ('{% autoescape off %}{% include "basic-syntax03" %}{% endautoescape %}', {'first': '&'}, ('& --- ', '& --- INVALID')),
|
||||||
|
'include14': ('{% autoescape off %}{% include "basic-syntax03" with first=var1 only %}{% endautoescape %}', {'var1': '&'}, ('& --- ', '& --- INVALID')),
|
||||||
|
|
||||||
'include-error01': ('{% include "basic-syntax01" with %}', {}, template.TemplateSyntaxError),
|
'include-error01': ('{% include "basic-syntax01" with %}', {}, template.TemplateSyntaxError),
|
||||||
'include-error02': ('{% include "basic-syntax01" with "no key" %}', {}, template.TemplateSyntaxError),
|
'include-error02': ('{% include "basic-syntax01" with "no key" %}', {}, template.TemplateSyntaxError),
|
||||||
'include-error03': ('{% include "basic-syntax01" with dotted.arg="error" %}', {}, template.TemplateSyntaxError),
|
'include-error03': ('{% include "basic-syntax01" with dotted.arg="error" %}', {}, template.TemplateSyntaxError),
|
||||||
|
|
Loading…
Reference in New Issue