zoukankan      html  css  js  c++  java
  • Django实战(20):分页(Pagination)

    在上一节我们实现了针对某个产品的订单订阅功能。但是我们可能需要直接在站点上查询所有的订单。显然,随着时间的增长订单会越来越多,所以分页(Pagination)是个好办法:每次只显示一部分订单。

    分页是Web应用常用的手法,Django提供了一个分页器类 Paginator(django.core.paginator.Paginator),可以很容易的实现分页的功能。该类有两个构造参数,一个是数据 的集合,另一个是每页放多少条数据。Paginator的基本使用如下:

    $python manage.py shell

    >>> from django.core.paginator import Paginator

    >>> objects = ['john', 'paul', 'george', 'ringo']

    >>> p = Paginator(objects, 2)      #每页两条数据的一个分页器

    >>> p.count        #数据总数

    4

    >>> p.num_pages      #总页数

    2

    >>>p.page_range       #页码的列表

    [1, 2]

    >>> page1 = p.page(1)     #第1页

    >>> page1

    <Page 1 of 2>

    >>> page1.object_list     #第1页的数据

    ['john', 'paul']

    >>> page2 = p.page(2)

    >>> page2.object_list      #第2页的数据

    ['george', 'ringo']

    >>> page2.has_next()     #是否有后一页

    False

    >>> page2.has_previous()   #是否有前一页

    True

    >>> page2.has_other_pages()   #是否有其他页

    True

    >>> page2.next_page_number()  #后一页的页码

    3

    >>> page2.previous_page_number()  #前一页的页码

    1

    >>> page2.start_index()   # 本页第一条记录的序数(从1开始)

    3

    >>> page2.end_index()    # 本页最后录一条记录的序数(从1开始)

    4

    >>> p.page(0)               #错误的页,抛出异常

    ...EmptyPage: That page number is less than 1

    >>> p.page(3)              #错误的页,抛出异常

    ...EmptyPage: That page contains no results

    其实前面scaffold生成的内容里面就已经包含了分页的功能,相信有了对Paginator的了解,你自己就可以看懂在view函数和模板中如何使用分页器了。

  • 相关阅读:
    SHELL脚本自动备份Linux系统
    Linux Shell脚本之自动修改IP
    oracle redo日志维护
    Linux运维工程师面试
    angular 的杂碎报错小知识
    angular.run 妙用
    vue的生命周期
    angular +H5 上传图片 与预览图片
    跨域问题解决方案之chrome插件
    js递归
  • 原文地址:https://www.cnblogs.com/wuxl360/p/5787947.html
Copyright © 2011-2022 走看看