Добрый вечер,
В вашем случае я бы сделал папку с вашими шаблонами.
Например:
templates
|- base.html
|- my_template.html
|- another_template.html
Включить
Решение заключается в использовании include
:
Например, в вашем base.html
вы бы имели:
<html>
<head>
</head>
<body>
{% include ['my_template.html', 'another_template.html'] %}
</body>
</html>
Здесь мы включаем результаты рендеринга my_template.html
и another_template.html
в ваш шаблон base.html.
Вы должны будете предоставить своей функции рендеринга все параметры, необходимые для всех HTML-шаблонов, которые вы хотите рендерить.
Расширяется
С jinja2 вы также можете делать то, что хотите, используя емкость extends
.
Итак, допустим, у вас есть шаблон base.html
типа:
<html>
<head>
</head>
<body>
{% block core %}
{{ content }}
{% endblock %}
</body>
</html>
Здесь у нас есть блок с именем core
.
Затем вы можете в другом шаблоне расширить базовый шаблон и заменить core block
чем-то другим, например:
{% extends "base.html" %}
{% block core %}
<h1>Hello world</h1>
{% endblock %}
К сожалению, как вы можете видеть, это означает, что если вы хотите различныеКуски HTML вам придется сделать несколько extends
.
У вас может быть другой шаблон, который будет расширять предыдущий шаблон, который расширяет базовый.
Руководство
Последнее решение, которое, на мой взгляд, не рекомендуется, но ради него я буду выставлять здесь:
Имеет base.html вида:
<html>
<head>
</head>
<body>
{% for html in list_html_to_render %}
{{ html }}
{% endfor %}
</body>
</html>
Тогда мы больше не используем Jinja2 в этом случае, но мы визуализируем каждый html, содержащийся в list_html_to_render, передаваемый в функцию рендеринга.
Надеюсь, это поможет.
Хорошего дня,
Мои наилучшие пожелания.