Django

Code

Changeset 4489

Show
Ignore:
Timestamp:
02/11/07 18:22:22 (2 years ago)
Author:
mtredinnick
Message:

Fixed #3351 -- Added optional naming of the block in "endblock" tags to ensure
correct nesting. Thanks for the patch, SmileyChris?.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • django/trunk/django/template/loader_tags.py

    r4265 r4489  
    130130    except AttributeError: # parser.__loaded_blocks isn't a list yet 
    131131        parser.__loaded_blocks = [block_name] 
    132     nodelist = parser.parse(('endblock',)) 
     132    nodelist = parser.parse(('endblock','endblock %s' % block_name)) 
    133133    parser.delete_first_token() 
    134134    return BlockNode(block_name, nodelist) 
  • django/trunk/docs/templates.txt

    r4474 r4489  
    253253      if you want to add to the contents of a parent block instead of 
    254254      completely overriding it. 
     255 
     256    * You can optionally name your ``{{ endblock }}`` tag with the same name 
     257      you gave the ``{{ block }}`` tag (for example, ``{{ endblock content }}``). 
     258      In larger templates this helps you see which ``{{ block }}`` tags are 
     259      being closed. 
    255260 
    256261Finally, note that you can't define multiple ``{% block %}`` tags with the same 
  • django/trunk/tests/regressiontests/templates/tests.py

    r4161 r4489  
    390390            'include03': ('{% include template_name %}', {'template_name': 'basic-syntax02', 'headline': 'Included'}, "Included"), 
    391391            'include04': ('a{% include "nonexistent" %}b', {}, "ab"), 
     392 
     393            ### NAMED ENDBLOCKS ####################################################### 
     394 
     395            # Basic test 
     396            'namedendblocks01': ("1{% block first %}_{% block second %}2{% endblock second %}_{% endblock first %}3", {}, '1_2_3'), 
     397 
     398            # Unbalanced blocks 
     399            'namedendblocks02': ("1{% block first %}_{% block second %}2{% endblock first %}_{% endblock %}3", {}, template.TemplateSyntaxError), 
     400            'namedendblocks03': ("1{% block first %}_{% block second %}2{% endblock %}_{% endblock second %}3", {}, template.TemplateSyntaxError), 
     401            'namedendblocks04': ("1{% block first %}_{% block second %}2{% endblock second %}_{% endblock third %}3", {}, template.TemplateSyntaxError), 
     402            'namedendblocks05': ("1{% block first %}_{% block second %}2{% endblock first %}", {}, template.TemplateSyntaxError), 
     403 
     404            # Mixed named and unnamed endblocks 
     405            'namedendblocks06': ("1{% block first %}_{% block second %}2{% endblock %}_{% endblock first %}3", {}, '1_2_3'), 
     406            'namedendblocks07': ("1{% block first %}_{% block second %}2{% endblock second %}_{% endblock %}3", {}, '1_2_3'), 
    392407 
    393408            ### INHERITANCE ###########################################################