Как сделать многократно используемые фрагменты страниц в Django?
Я хочу создать своего рода "фрагменты" , которые я могу повторно использовать на любой странице. Я знаю о {% include %}
, но цель состоит в том, чтобы вложить в них какую-то логику. По сути, они должны действовать как мини-виды. (?)
Например, блок рекомендации статей здесь должен иметь некоторую логику (запрос моделей, возможно), и я должен иметь возможность поместить его на любую страницу, которую я хочу.
Мне кажется, что решение там очень простое, а я просто слишком запутался в чем-то :)
Если вы создадите родительский html-файл:
ПРИМЕР - "base_article_generic.html"
<div class="row">
<div class="col-8" style="border: 2px solid green;height:300px;">
{% block article %}
{% endblock %}
</div>
<div class="col-4" style="border: 2px solid green;height:300px;">
{% block sidebar %}
{% endblock %}
</div>
</div>
<div class="row">
<div class="col-8" style="border: 2px solid green;height:100px;">
{% block article_recommmendations %}
{% endblock %}
</div>
<div class="col-4"></div>
</div>
Затем для повторного использования используйте тег шаблона extends
. Затем вы можете перезаписать блоки с содержимым, характерным для этого шаблона:
{% extends "base_article_generic.html" %}
{% block article %}
content!
{% endblock %}