From 8cc2f5aed186f8b83bfac240b2a1480bd0c11e4f Mon Sep 17 00:00:00 2001 From: Tim Graham Date: Sat, 25 Mar 2017 08:22:12 -0400 Subject: [1.11.x] Fixed #27956 -- Fixed display of errors in an {% extends %} child. Thanks Ling-Xiao Yang for the report and test, and Preston Timmons for the fix. Backport of e643ba8bcf0b1da517cbab689ac157ee031202a3 from master --- django/template/context.py | 8 +++++--- django/template/loader_tags.py | 3 ++- 2 files changed, 7 insertions(+), 4 deletions(-) (limited to 'django') diff --git a/django/template/context.py b/django/template/context.py index 166f60fe75..7f0826c644 100644 --- a/django/template/context.py +++ b/django/template/context.py @@ -215,15 +215,17 @@ class RenderContext(BaseContext): return self.dicts[-1][key] @contextmanager - def push_state(self, template): + def push_state(self, template, isolated_context=True): initial = self.template self.template = template - self.push() + if isolated_context: + self.push() try: yield finally: self.template = initial - self.pop() + if isolated_context: + self.pop() class RequestContext(Context): diff --git a/django/template/loader_tags.py b/django/template/loader_tags.py index 4ff5ec4db5..020f2e412a 100644 --- a/django/template/loader_tags.py +++ b/django/template/loader_tags.py @@ -173,7 +173,8 @@ class ExtendsNode(Node): # Call Template._render explicitly so the parser context stays # the same. - return compiled_parent._render(context) + with context.render_context.push_state(compiled_parent, isolated_context=False): + return compiled_parent._render(context) class IncludeNode(Node): -- cgit v1.3