Почему блок javascript из включенного шаблона не выполняется в Djjan go? - PullRequest
0 голосов
/ 15 января 2020

У меня есть javascript блок в шаблоне, который входит в базу. html. Интересно, почему это не работает?

Вот моя база. html

<!DOCTYPE html>
<html lang="en">
<head>
    <title>{% block title %} Base {% endblock title %}</title>
</head>
<body>
    {% block content %}
    {% endblock content %}
</body>
<script>
    console.log("print from base");
</script>
    {% block js %}
    {% endblock js %}
</html>

Это нижний колонтитул. html

{% block js %}
    <script>
        console.log("print from footer");
    </script>
{% endblock js %}

А вот и индекс. html

{% extends 'base.html' %}

{% block content %}
Content from index.html
{%endblock%}

{% include 'footer.html' %}

Отображаются только «Содержимое из индекса. html» и «Печать из базы».

1 Ответ

0 голосов
/ 16 января 2020

Я считаю, что это причина этого. Найдено в Django документах.

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

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

...