5

我在我的 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>

如果您在第二页,这会导致看起来像 [<<, 1, 2 , 3, >>] 的内容。我想将覆盖范围扩大一到两步左右。因此,如果我在第 3 页,我可以从 1 到 5 一直到达。

4

1 回答 1

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 类突出显示该页面,并让它知道它应该计算变量。

于 2013-06-20T21:48:24.760 回答