我在我的Django项目中使用Pagination并且一切正常,但我不知道如何扩展我的范围超出我所在的那一页的+/-一页。目前,我的html看起来像这样:
<div class="pagination pagination-centered">
<ul>
{% if title.has_previous %}
<li><a href="?q={{ query }}&page={{ title.previous_page_number }}">«</a></li>
<li><a href="?q={{ query }}&page={{ title.previous_page_number }}">{{ title.previous_page_number }}</a></li>
{% endif %}
<li class="active"><a href="?q={{ query }}&page={{ title.number }}">{{ title.number }}</a></li>
{% if title.has_next %}
<li><a href="?q={{ query }}&page={{ title.next_page_number }}">{{ title.next_page_number }}</a></li>
<li><a href="?q={{ query }}&page={{ title.next_page_number }}">»</a></li>
{% endif %}
</ul>
</div>
如果你在第二页,这会产生类似[&lt;&lt;&lt;&lt;, 2 ,3,&gt;&gt;]的内容。我希望通过一两步左右扩大范围。因此,如果我在第3页,我可以从1-5开始一直到达。
答案 0 :(得分:5)
{# Create A Button Group that contains possible pages to navigate to #}
{% for page in paginator.page_range %}
{% if page < toolbar_max and page > toolbar_min and page != results.number %}
<button formaction="{% url 'volume:page' page=page %}">{{ page }}</button>
{% elif page == results.number %}
<button type="submit" formaction="{% url 'volumes:page' page=page %}">{{ page }}</button>
{% endif %}
{% endfor %}
基本上,您保留所需的最小和最大数量页面(toolbar_min和toolbar_max并将其传递到您的页面。
# Variables to be passed for page menu
toolbar_max = results.number + 4
toolbar_min = results.number -4
因此它会在您当前所在号码的每一侧显示4。 '结果'是我的查询,显示我当前的页面。我希望用不同的css类突出显示该页面,并且知道它应该从变量开始计算。