mirror of https://github.com/django/django.git
Fixed #3351 -- Added optional naming of the block in "endblock" tags to ensure
correct nesting. Thanks for the patch, SmileyChris. git-svn-id: http://code.djangoproject.com/svn/django/trunk@4489 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
d123588184
commit
a0c354ee4e
|
@ -129,7 +129,7 @@ def do_block(parser, token):
|
||||||
parser.__loaded_blocks.append(block_name)
|
parser.__loaded_blocks.append(block_name)
|
||||||
except AttributeError: # parser.__loaded_blocks isn't a list yet
|
except AttributeError: # parser.__loaded_blocks isn't a list yet
|
||||||
parser.__loaded_blocks = [block_name]
|
parser.__loaded_blocks = [block_name]
|
||||||
nodelist = parser.parse(('endblock',))
|
nodelist = parser.parse(('endblock','endblock %s' % block_name))
|
||||||
parser.delete_first_token()
|
parser.delete_first_token()
|
||||||
return BlockNode(block_name, nodelist)
|
return BlockNode(block_name, nodelist)
|
||||||
|
|
||||||
|
|
|
@ -253,6 +253,11 @@ Here are some tips for working with inheritance:
|
||||||
if you want to add to the contents of a parent block instead of
|
if you want to add to the contents of a parent block instead of
|
||||||
completely overriding it.
|
completely overriding it.
|
||||||
|
|
||||||
|
* You can optionally name your ``{{ endblock }}`` tag with the same name
|
||||||
|
you gave the ``{{ block }}`` tag (for example, ``{{ endblock content }}``).
|
||||||
|
In larger templates this helps you see which ``{{ block }}`` tags are
|
||||||
|
being closed.
|
||||||
|
|
||||||
Finally, note that you can't define multiple ``{% block %}`` tags with the same
|
Finally, note that you can't define multiple ``{% block %}`` tags with the same
|
||||||
name in the same template. This limitation exists because a block tag works in
|
name in the same template. This limitation exists because a block tag works in
|
||||||
"both" directions. That is, a block tag doesn't just provide a hole to fill --
|
"both" directions. That is, a block tag doesn't just provide a hole to fill --
|
||||||
|
|
|
@ -390,6 +390,21 @@ class Templates(unittest.TestCase):
|
||||||
'include03': ('{% include template_name %}', {'template_name': 'basic-syntax02', 'headline': 'Included'}, "Included"),
|
'include03': ('{% include template_name %}', {'template_name': 'basic-syntax02', 'headline': 'Included'}, "Included"),
|
||||||
'include04': ('a{% include "nonexistent" %}b', {}, "ab"),
|
'include04': ('a{% include "nonexistent" %}b', {}, "ab"),
|
||||||
|
|
||||||
|
### NAMED ENDBLOCKS #######################################################
|
||||||
|
|
||||||
|
# Basic test
|
||||||
|
'namedendblocks01': ("1{% block first %}_{% block second %}2{% endblock second %}_{% endblock first %}3", {}, '1_2_3'),
|
||||||
|
|
||||||
|
# Unbalanced blocks
|
||||||
|
'namedendblocks02': ("1{% block first %}_{% block second %}2{% endblock first %}_{% endblock %}3", {}, template.TemplateSyntaxError),
|
||||||
|
'namedendblocks03': ("1{% block first %}_{% block second %}2{% endblock %}_{% endblock second %}3", {}, template.TemplateSyntaxError),
|
||||||
|
'namedendblocks04': ("1{% block first %}_{% block second %}2{% endblock second %}_{% endblock third %}3", {}, template.TemplateSyntaxError),
|
||||||
|
'namedendblocks05': ("1{% block first %}_{% block second %}2{% endblock first %}", {}, template.TemplateSyntaxError),
|
||||||
|
|
||||||
|
# Mixed named and unnamed endblocks
|
||||||
|
'namedendblocks06': ("1{% block first %}_{% block second %}2{% endblock %}_{% endblock first %}3", {}, '1_2_3'),
|
||||||
|
'namedendblocks07': ("1{% block first %}_{% block second %}2{% endblock second %}_{% endblock %}3", {}, '1_2_3'),
|
||||||
|
|
||||||
### INHERITANCE ###########################################################
|
### INHERITANCE ###########################################################
|
||||||
|
|
||||||
# Standard template with no inheritance
|
# Standard template with no inheritance
|
||||||
|
|
Loading…
Reference in New Issue