Использовать блоки из включенных файлов для родителя в jinja2

Я не уверен, что то, что я хочу сделать, возможно: я пытаюсь получить блок в родительском шаблоне, который будет заполнен файлом, включенным в дочерний шаблон родителя.

Лучший способ объяснить это на тестовом примере:

Файл t1.djhtml:

<root>
    <block t3_container>
        {% block t3 %}This should be 'CONTENT'{% endblock %}
    </block t3_container>

    <block t2_container>
    {% block t2 %}{% endblock %}
    </block t2_container>
</root>

Файл t2.djhtml:

{% extends 't1.djhtml' %}

{% block t2 %}
        <block t2>
            {%- include 't3.djhtml' with context %}
        </block t2>
{% endblock %}

Файл t3 .djhtml:

{% block t3 %}
        <block t3>
            CONTENT
        </block t3>
{% endblock %}

Файл test.py:

from jinja2 import Environment, FileSystemLoader
env  = Environment(loader=FileSystemLoader(''))
t=env.get_template('t2.djhtml')
print t.render()

Вывод:

<root>
    <block t3_container>
        This should be 'CONTENT'
    </block t3_container>

    <block t2_container>

        <block t2>
        <block t3>
            CONTENT
        </block t3>

        </block t2>

    </block t2_container>
</root>

Блок t2 должен быть пустым, а t3_container ] должен содержать содержимое блока t3. Как мне это сделать?

7
задан defuz 4 December 2013 в 15:29
поделиться