Как сделать многократно используемые фрагменты страниц в Django?

Я хочу создать своего рода "фрагменты" , которые я могу повторно использовать на любой странице. Я знаю о {% include %}, но цель состоит в том, чтобы вложить в них какую-то логику. По сути, они должны действовать как мини-виды. (?)


Illustration

Например, блок рекомендации статей здесь должен иметь некоторую логику (запрос моделей, возможно), и я должен иметь возможность поместить его на любую страницу, которую я хочу.


Мне кажется, что решение там очень простое, а я просто слишком запутался в чем-то :)

Если вы создадите родительский 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 %}
Вернуться на верх