Как избежать "много {%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>© {{ 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 %}
Пагинация должна быть файлом, который только отображает содержимое пагинации, а не шаблон вокруг этого.
Таким образом, это означает, что вы реализуете пагинацию без {% 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
выводить заголовки, колонтитулы и другое содержимое. Затем вы можете просто импортировать пагинацию в качестве шаблона утилиты.