Допустим, у меня есть три файла шаблона HTML, показанные ниже. HTML минимален, чтобы проиллюстрировать это.
Возможно ли как-то вложить блок с именем extra_head_content в блок, уже названный extra_head_content. Идея состоит в том, чтобы позволить шаблону третьего уровня предоставить блок с именем extra_head_content. Приведенный выше шаблон берет этот контент, добавляет его в свой блок с именем extra_head_content и предоставляет этот объединенный блок своему родительскому шаблону.
По сути, я ищу вложение блоков между унаследованными файлами шаблонов.
Точный сценарий, который я пытаюсь решить, заключается в том, что любой шаблон должен иметь возможность добавлять дополнительные файлы javascript или css в элемент head. Тем не менее, нижний шаблон не должен заботиться о том, сколько уровней вниз он вложен. Аналогично, содержимое дополнительного заголовка, предоставляемое промежуточным шаблоном, не должно перезаписываться элементом блока шаблона терминала.
base.html
<html>
<head>
<link rel="stylesheet" type="text/css" href="/static/css/reset.css" />
{% block extra_head_content %}{% endblock %}
</head>
<body>{% block content %}{% endblock %}
</html>
account.html
{% extends "base.html" %}
{% block extra_head_content %}
<link rel="stylesheet" type="text/css" href="/static/css/account.css" />
{% block extra_head_content %}{% endblock %}
{% endblock %}
{% block content %}
<div id="menu">...</div>
{% block account_content %}{% endblock %}
{% endblock %}
account_profile.html
{% extends "account.html" %}
{% block extra_head_content %}
<link rel="stylesheet" type="text/css" href="/static/css/edit_profile.css" />
{% endblock %}
{% block account_content %}
Welcome to your profile
{% endblock %}