Django分页显示

Django自身提供了一些类来实现管理分页,数据被分在不同的页面中,并带有“上一页/下一页”标签。这个类叫做Pagination,其定义位于 django/core/paginator.py 中。

实例:简单分页

  1. views
def index(request):
    users = User.objects.all()
    pindex = request.GET.get("pindex")
    #分页
    pageinator = Paginator(users, 2)
    if pindex=="" or pindex==None:
         pindex = 1
    page = pageinator.page(pindex)
    return render(request,'page_demo/index.html',{'page':page})
  1. templates
遍历:
{% for emp in page.object_list %}
{% endfor %}

分页:
{% if page.has_previous %}
    <a href="/emp/empList/?pindex={{ page.previous_page_number }}">&lt;上一页</a>
{% endif %}
{% for pindex in page.paginator.page_range %}
    {% if pindex == page.number %}
        {{ pindex }}
    {% else %}
        <a href="/emp/empList/?pindex={{ pindex }}">{{ pindex }}</a>
    {% endif %}
{% endfor %}
{% if page.has_next %}
    <a href="/emp/empList/?pindex={{ page.next_page_number }}">&gt;下一页</a>
{% endif %}
  1. 配置urls映射,完成分页

知识点:

  1. pagtor = Paginator(User.objects.all(),per_page=3) # 构造分页器对象
  2. Paginator.count:所有页面对象总数,即统计object_list中item数目。
  3. Pagnator.num_pages:页面总数。
  4. pagiator.page_range:页面范围,从1开始,例如[1,2,3,4]
  5. page = Paginator(User.objects.all(),per_page=3).page(1) # 获取第一页
  6. Page.has_next () 如果有下一页,则返回 True
  7. Page.has_previous () 如果有上一页,返回 True
  8. Page.has_other_pages () 如果有上一页或下一页,返回 True
  9. Page.next_page_number () 返回下一页的页码。如果下一页不存在,抛出 InvlidPage 异常
  10. Page.previous_page_number () 返回上一页的页码。如果上一页不存在,抛出InvalidPage异常
  11. Page.start_index () 返回当前页上的第一个对象,相对于分页列表的所有对象的序号,从1开始。比如,将
    五个对象的列表分为每页两个对象,第二页的 start_index() 会返回 3
  12. Page.end_index () 返回当前页上的最后一个对象,相对于分页列表的所有对象的序号,从1开始。 比如,
    将五个对象的列表分为每页两个对象,第二页的 end_index() 会返回 4
  13. Page.object_list 当前页上所有对象的列表
  14. Page.number 当前页的序号,从1开始
  15. Page.paginator 相关的 Paginator 对象
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值