Nested blocks in Django templates
The master
temp开发者_C百科late in my Django app looks like this:
{% block parent %}
Some text...
{% block child %}
Default content here...
{% endblock child %}
...some more text
{% endblock parent %}
Now, this template should be overwritten in a way that the child
block is changed:
{% extends "master.html" %}
{% block child %}
New content here...
{% endblock child%}
However, the rendering stays the same (printing "default content here..."). Have I missed something obvious or are nested blocks not possible? (Or, violating the DRY principle, have I to re-define the parent
block?)
Edit: I'm working with Django 1.1, if that matters.
OK, it's a bug in Django's template system. For most other cases, Ben James is right (see his comment to my question above).
In my case, the child
block was inside a {% ifnotequal a b %}
block, and that breaks the block inheritance. I consider that to be a bug, since there are dozens of natural use cases for such operations.
The corresponding ticket.
Do this:
{% extends "master.html" %}
{% block parent %}
{% block child %}
New content here...
{% endblock child%}
{% endblock parent %}
精彩评论