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函数和模板中如何使用分页器了。

  • 相关阅读:
    Python selenium —— 一定要会用selenium的等待,三种等待方式解读
    python3 selenium 切换窗口的几种方法
    转:对UI自动化测试的一些感悟
    Docker
    【转】selenium之 定位以及切换frame
    selenium——键盘操作
    selenium——鼠标事件
    python 读取Excel表格方法
    springboot maven 更新jar包速度慢的问题
    Python3 读写utf-8文本文件
  • 原文地址:https://www.cnblogs.com/wuxl360/p/5787947.html
Copyright © 2011-2022 走看看