首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取digg样式分页

如何获取digg样式分页
EN

Stack Overflow用户
提问于 2015-07-31 05:36:52
回答 3查看 2.3K关注 0票数 2
代码语言:javascript
复制
class Shipment(ListView):
    template_name = "listing-base.html"
    model = Shipment
    context_object_name = "shipment_list"
    paginate_by = 25

输出结果如下

代码语言:javascript
复制
Previous Page 1   of  7  NEXT PAGE

相反,我需要

代码语言:javascript
复制
 Previous Page 1 2 ...5..7  NEXT PAGE

请提前帮忙谢谢“

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-31 08:28:24

这个版本是用CBV测试的,它是这个博客帖子代码的一个修改版本。

分页是在模板标记中添加的,因此您只需为使用ListView呈现的任何模板加载它,例如,对于listing-base.html

代码语言:javascript
复制
{% load paginator_tags %}

<!-- your list -->

{% get_pagination 2 1 %}

get_pagination是在paginator_tags.py中定义的模板标记。更改first_last_amountbefore_after_amount可以控制要显示多少页:

代码语言:javascript
复制
Previous  1  2  ... 5  6  7  8  9  10  11  ... 25  26  Next

paginator_tags.py

代码语言:javascript
复制
from django import template

register = template.Library()


@register.inclusion_tag('_pagination.html', takes_context=True)
def get_pagination(context, first_last_amount=2, before_after_amount=4):
    page_obj = context['page_obj']
    paginator = context['paginator']
    is_paginated = context['is_paginated']
    page_numbers = []

    # Pages before current page
    if page_obj.number > first_last_amount + before_after_amount:
        for i in range(1, first_last_amount + 1):
            page_numbers.append(i)

        if first_last_amount + before_after_amount + 1 != paginator.num_pages:
            page_numbers.append(None)

        for i in range(page_obj.number - before_after_amount, page_obj.number):
            page_numbers.append(i)

    else:
        for i in range(1, page_obj.number):
            page_numbers.append(i)

    # Current page and pages after current page
    if page_obj.number + first_last_amount + before_after_amount < paginator.num_pages:
        for i in range(page_obj.number, page_obj.number + before_after_amount + 1):
            page_numbers.append(i)

        page_numbers.append(None)

        for i in range(paginator.num_pages - first_last_amount + 1, paginator.num_pages + 1):
            page_numbers.append(i)

    else:
        for i in range(page_obj.number, paginator.num_pages + 1):
            page_numbers.append(i)

    return {
        'paginator': paginator,
        'page_obj': page_obj,
        'page_numbers': page_numbers,
        'is_paginated': is_paginated,
    }

_pagination.html文件:

代码语言:javascript
复制
{% if is_paginated %}
<div class="pagination-wrapper">
    <ul class="pager">
    {% if page_obj.has_previous %}
        <li><a href="?page={{ page_obj.previous_page_number }}">Previous</a></li>
    {% endif %}
    {% for page in page_numbers %}
        {% if page %}
            {% ifequal page page_obj.number %}
                <li class="disabled"><a href="#">{{ page }}</a></li>
            {% else %}
                <li><a href="?page={{ page }}">{{ page }}</a></li>
            {% endifequal %}
        {% else %}
            ...
        {% endif %}
    {% endfor %}
    {% if page_obj.has_next %}
        <li><a href="?page={{ page_obj.next_page_number }}">Next</a></li>
    {% endif %}
    </ul>
</div>
{% endif %}
票数 5
EN

Stack Overflow用户

发布于 2015-07-31 05:50:44

您可以使用Django无止境的分页,并使用它轻松地实现数码分页

票数 2
EN

Stack Overflow用户

发布于 2015-07-31 05:56:29

试试折叠式的方法

在views.py中

代码语言:javascript
复制
page = request.POST['page_numb']
paginator = Paginator(object_list, 10)
lenth_data1 = paginator.num_pages
lenth_data = range(1, lenth_data1 + 1)
return render(request, 'home/home.html', {'lenth_data':lenth_data})

在html中

代码语言:javascript
复制
<input type="hidden" value="{{ organization_search.number }}" id="page_numb2"name="page_numb">
<ul class="pagination">
                                {% if organization_search.has_previous %}
                                    <li class="waves-effect overlay">
                                        <a
                                                id="{{ i }}nexssa"
                                                onclick="nex({{ organization_search.previous_page_number }})">
                                            <i class="mdi-navigation-chevron-left"></i></a></li>
                                {% else %}
                                    <li class="disabled"><a href="#!"><i class="mdi-navigation-chevron-left"></i></a>
                                    </li>
                                {% endif %}
                                {% for i in lenth_data %}
                                    <li class="overlay waves-effect {% if forloop.counter == organization_search.number %}active{% endif %}">
                                        <a
                                                id="{{ i }}nex" onclick="nex({{ i }})">{{ i }}</a></li>
                                {% endfor %}
                                {% if organization_search.has_next %}
                                    <li class="waves-effect">
                                        <a
                                                id="{{ i }}nexsa"
                                                onclick="nex({{ organization_search.next_page_number }})"><i
                                                class="mdi-navigation-chevron-right"></i></a></li>

                                    {#                                    <a href="?page={{ organization_search.next_page_number }}"><i#}
                                    {#                                        class="mdi-navigation-chevron-right"></i></a></li>#}
                                {% else %}
                                    <li class="disabled"><a href="#!"><i class="mdi-navigation-chevron-right"></i></a>
                                    </li>
                                {% endif %}
                            </ul>

                        </div>
                    </div>
function nex(i) {

                            $("#page_numb2").val(i);
                            $("#first_form").submit();
                        }

希望这能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31738790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档