【问题标题】:Django python pagination always displaye the first 2, and last 2 pagesDjango python分页总是显示前2页和最后2页
【发布时间】:2021-02-05 21:16:12
【问题描述】:

我有一些表格的分页。我有它,因此它只会在当前页面的两侧显示 3 页。但是,如果我在第 5 页,第一页就会消失。我正在尝试对其进行设置,以便无论当前页面是什么,分页的前两页和最后两页始终可见。

代码:

{% if is_paginated %}
    <div class="pagination">
        {% if current_page.has_previous %}
            <a class="page-link" style="font-size: 24px; padding: 2px;" href="?page={{ current_page.previous_page_number }}">&#171;</a>
        {% else %}
            <a class="page-link" style="font-size: 24px; padding: 2px;" href="">&#171;</a>
        {% endif %}
        {% for i in current_page.paginator.page_range %}
            {% if i == 1 %}
                {% if current_page.number == i %}
                    <a class="page-link active" href="">{{ i }}</a>
                {% else %}
                    <a class="page-link" href="?page={{ i }}">{{ i }}</a>
                {% endif %}
            {% endif %}
            {% if i == 2 %}
                {% if current_page.number == i %}
                    <a class="page-link active" href="">{{ i }}</a>
                {% else %}
                    <a class="page-link" href="?page={{ i }}">{{ i }}</a>
                {% endif %}
            {% endif %}
            {% if i != 1 and i != 2 %}
                {% if current_page.number == i %}
                    <a class="page-link active" href="">{{ i }}</a>
                {% else %}
                    {% if current_page.number|add:-4 == i %}
                        <a class="page-link" href="">...</a>
                    {% endif %}
                    {% if current_page.number|add:3 >= i and current_page.number|add:-3 <= i %}
                        <a class="page-link" href="?page={{ i }}">{{ i }}</a>
                    {% endif %}
                    {% if current_page.number|add:4 == i %}
                        <a class="page-link" href="">...</a>
                    {% endif %}
                {% endif %}
            {% endif %}
        {% endfor %}
        {% if current_page.has_next %}
            <a class="page-link" style="font-size: 24px; padding: 2px;" href="?page={{ current_page.next_page_number }}">&#187;</a>
        {% else %}
            <a class="page-link" style="font-size: 24px; padding: 2px;" href="">&#187;</a>
        {% endif %}
    </div>
{% endif %}

截图:

更新:

我想出了一个让前两页总是显示但不能让最后两页总是显示的卡顿方法

【问题讨论】:

    标签: python django pagination


    【解决方案1】:

    我添加了一些 if 语句以始终显示第一个和最后一个位置。

    我将它设置为如果i == 1 在分页导航栏中显示页面。然后在i 循环期间,我使用i != 1 and i != current_page.paginator.page_range|last 删除第一页和最后一页。

    使用current_page.paginator.page_range|last 将获得范围内的最后一个值,然后您对最后一页执行与第一页相同的操作。

    代码:

    {% for i in current_page.paginator.page_range %}
        {% if i == 1 %}
            {% if current_page.number == i %}
                <a class="page-link active" href="">{{ i }}</a>
            {% else %}
                <a class="page-link" href="?page={{ i }}">{{ i }}</a>
            {% endif %}
        {% endif %}
        {% if i != 1 and i != current_page.paginator.page_range|last %}
            {% if current_page.number == i %}
                <a class="page-link active" href="">{{ i }}</a>
            {% else %}
                {% if current_page.number|add:-4 == i %}
                    <a class="page-link" href="">...</a>
                {% endif %}
                {% if current_page.number|add:3 >= i and current_page.number|add:-3 <= i %}
                    <a class="page-link" href="?page={{ i }}">{{ i }}</a>
                {% endif %}
                {% if current_page.number|add:4 == i %}
                    <a class="page-link" href="">...</a>
                {% endif %}
            {% endif %}
        {% endif %}
        {% if i == current_page.paginator.page_range|last %}
            {% if current_page.number == i %}
                <a class="page-link active" href="">{{ current_page.paginator.page_range|last }}</a>
            {% else %}
                <a class="page-link" href="?page={{ current_page.paginator.page_range|last }}">{{ current_page.paginator.page_range|last }}</a>
            {% endif %}
        {% endif %}
    {% endfor %}
    

    截图:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-22
      相关资源
      最近更新 更多