2015-09-16 2 views
0

У меня есть шаблон базового представления и два дочерних элемента, которые наследуют его. Хотя у двух детей общий контент, определенный в базе, я хочу показать некоторые из них в другом порядке. Я бы ожидал, что следующее будет работать, но блоки будут отображаться в том же порядке, что и родительский элемент на обоих шаблонах.Переупорядочить блоки в шаблоне django

Родитель:

{% block foo %} 
    Foo foo foo foo 
{% endblock foo %} 
{% block bar %} 
    Bar bar 
{% endblock bar %} 
{% block baz %} 
    Baz baz 
{% endblock baz %} 

ребенку

{% block foo %} 
    {{ block.super }} 
{% endblock foo %} 
{% block bar %} 
    {{ block.super }} 
{% endblock bar %} 
{% block baz %} 
    {{ block.super }} 
{% endblock baz %} 

Детский B

{% block bar %} 
    {{ block.super }} 
{% endblock bar %} 
{% block foo %} 
    {{ block.super }} 
{% endblock foo %} 
{% block baz %} 
    {{ block.super }} 
{% endblock baz %} 
+1

Это правильно; именно так работает система шаблонов. У вас есть конкретный вопрос в отношении этого? –

+0

Прошу прощения, я подумал, что ясно, что, поскольку фактическое поведение отличается от того, что я намеревался, я спрашивал, как получить то, что я намеревался. – thumbtackthief

ответ

1

Django шаблоны не работают таким образом.

Документы говорят: «Наследование шаблонов позволяет вам создать базовый« скелетный »шаблон, который содержит все общие элементы вашего сайта и определяет блоки, которые дочерние шаблоны могут переопределять». Таким образом, дочерние шаблоны предоставляют только информацию, содержимое блока для родителя. И это все. Они ничего не делают с расположением.

Вам нужно сделать еще один базовый шаблон и расширить его, чтобы получить другой порядок блоков на странице.

+0

Да, это тоже мое понимание. Я неправильно понял предложенное коллегой решение. – thumbtackthief

0

Я решил это, перемещая каждый блок в свой собственный шаблон, а затем

{% include "foo.html" %} 
{% include "bar.html" %} 
{% include "baz.html" %} 

в порядке, мне нужно.

Смежные вопросы