Как избежать "много {%include%} дает много <footer>"?

Когда мне нужно использовать много {%include%} (контента) в html-шаблонах - появляются ли ненужные расширения для каждого включения контента? Эффекты также применяются к каждому последующему включению контента... Когда я могу добавить включение контента в первый расширитель html-шаблона, все в порядке. Но когда я использую "пагинацию", мне нужно отправить "page=posts" в paginator.html. Я не могу найти способ отправить эту переменную в blog.html из layout.html... И я думаю, что в будущем у меня будут те же проблемы, и поэтому это должно быть решено.

layout.html

<div class="container body-content">
        <div id="content">
            {% block content %}
            {% endblock %}
        </div>
    </div>

    <div class="container body-content">
        <footer>
            <hr/>
            <p>&copy; {{ year }}. Сайт</p>
        </footer>
    </div>

blog.html

{% extends "app/layout.html" %}
 <!--♕-->
{% block content %}
        <h2>{{ title }}</h2><br>

        {% for post in posts %}
        <hr>
        <div class="">
            <h2> {{post.title}} </h2>
            <p> {{post.posted}} </p>
        </div>
        <p>
            <a href="{% url 'blogpost' parametr=post.id %}">{{ post.description }}</a>
        </p>
    {% endfor %}

    {% include "app/pagination.html" with page=posts %}

{% endblock %}

pagination.html

{% extends "app/blog.html" %} 
 <!--♕-->
{% block content %} 
    <div class="pagination">
        <span class="step-links">
            {% if page.has_previous %}
                <a href="?page={{ page.previous_page_number }}">Предыдущая</a>
            {% endif %}
            <span class="current">
                Страница {{ page.number }} из {{ page.paginator.num_pages }}
            </span>
            {% if page.has_next %}
                <a href="?page={{ page.next_page_number }}">Следующая</a>
            {% endif %}
        </span>
    </div>
{% endblock %}

enter image description here

Пагинация должна быть файлом, который только отображает содержимое пагинации, а не шаблон вокруг этого.

Таким образом, это означает, что вы реализуете пагинацию без {% extends "app/layout.html" %}, поэтому:

{# pagination.html, no extends or block #}
<div class="pagination">
    <span class="step-links">
        {% if page.has_previous %}
            <a href="?page={{ page.previous_page_number }}">Предыдущая</a>
        {% endif %}
        <span class="current">
            Страница {{ page.number }} из {{ page.paginator.num_pages }}
        </span>
        {% if page.has_next %}
            <a href="?page={{ page.next_page_number }}">Следующая</a>
        {% endif %}
    </span>
</div>

Это не позволит pagination.html выводить заголовки, колонтитулы и другое содержимое. Затем вы можете просто импортировать пагинацию в качестве шаблона утилиты.

Вернуться на верх