Fixed #21707 -- Added helpful error message when using {{ block.super }} in base template.

Thanks mitar for the suggestion.
This commit is contained in:
Anubhav Joshi 2014-07-13 14:28:36 +05:30 committed by Tim Graham
parent 5f919b9c81
commit b1abfb3c59
2 changed files with 8 additions and 0 deletions

View File

@ -68,6 +68,11 @@ class BlockNode(Node):
return result
def super(self):
if not hasattr(self, 'context'):
raise TemplateSyntaxError(
"'%s' object has no attribute 'context'. Did you use "
"{{ block.super }} in a base template?" % self.__class__.__name__
)
render_context = self.context.render_context
if (BLOCK_CONTEXT_KEY in render_context and
render_context[BLOCK_CONTEXT_KEY].get_block(self.name) is not None):

View File

@ -881,6 +881,9 @@ class TemplateTests(TestCase):
# Raise exception for custom tags used in child with {% load %} tag in parent, not in child
'exception04': ("{% extends 'inheritance17' %}{% block first %}{% echo 400 %}5678{% endblock %}", {}, template.TemplateSyntaxError),
# Raise exception for block.super used in base template
'exception05': ("{% block first %}{{ block.super }}{% endblock %}", {}, template.TemplateSyntaxError),
### FILTER TAG ############################################################
'filter01': ('{% filter upper %}{% endfilter %}', {}, ''),
'filter02': ('{% filter upper %}django{% endfilter %}', {}, 'DJANGO'),