Порядок действий при разборе шаблонов Django - PullRequest
0 голосов
/ 04 июня 2019

Я пытаюсь выяснить, как Django обрабатывает порядок операций при визуализации HTML-шаблонов.

Возьмите следующее как пример того, что я пытаюсь ответить.

У меня есть базовый шаблон, который "{% includes%}" раздел кода, который содержит оператор "{% block%}".

Этот базовый шаблон используется в "{% extends%}", а оператор "{% block%}" переопределен в этом дочернем шаблоне.

common.html

<div>
{% block content %}{% endblock %}
</div>

base.html

{% include common.html %}

child.html

{% extends 'base.html'%}
{% block content %}
..... some code
{% endblock %}

Из моего тестирования этот блок не был переопределен, как я ожидал, я делаю что-то не так или это происходит по порядку операций при разборе шаблона Django.

1 Ответ

1 голос
/ 04 июня 2019

Это на самом деле не связано с порядком операций, а с определением тега include.Начиная с документа :

тег включения следует рассматривать как реализацию «рендеринга этого подшаблона и включения HTML», а не как «анализ этого подшаблона и включение его содержимого какесли бы это было частью родителя ».Это означает, что между включенными шаблонами нет общего состояния - каждое включение является полностью независимым процессом рендеринга.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...