目录
百战程序员,全站22050+开发课程+文档 ,学习精选优质好课快人一步!观看视频 快捷键ALT+N

Python全系列 教程

3567个小节阅读:5930k

收藏
全部开发者教程

鸿蒙应用开发

C语言快速入门

JAVA全系列 教程

面向对象的程序设计语言

Python全系列 教程

Python3.x版本,未来主流的版本

人工智能 教程

顺势而为,AI创新未来

大厂算法 教程

算法,程序员自我提升必经之路

C++ 教程

一门通用计算机编程语言

微服务 教程

目前业界流行的框架组合

web前端全系列 教程

通向WEB技术世界的钥匙

大数据全系列 教程

站在云端操控万千数据

AIGC全能工具班

A

A A

White Night

阅读(874)
赞(0)

Django工具-分页器介绍

image-20221031200129299

介绍

分页,就是当我们在页面中显示一些信息列表,内容过多,一个页面显示不完,需要分成多个页面进行显示时,使用的技术就是分页技术

image-20221031200221445

在django项目中,一般是使用3种分页的技术:

  1. 自定义分页功能,所有的分页功能都是自己实现
  2. django的插件 django-pagination 实现
  3. django自带的分页器 paginator

分页器相关对象

分页器的对象在 django/core/paginator.py 模块中,主要包括Paginator类和Page类:

Paginator类

  1. 初始化方法__init__(self, object_list, per_page, orphans=0,allow_empty_first_page=True):

    • object_list:可以是QuerySet、带有count()或__len__()方法的列表、元组或其它可切片的对象,如果是QuerySet,应该进行排序,使用order_by()子句或者有默认的ordering
    • per_page:每个页面上显示的项目数目,不包括orphans部分
    • orphans:默认为0,如果最后一页显示的数目小于等于该数值,那么则将最后一页的内容(假设数为N)添加到倒数第二页中去,这样的话倒数第二页就成了最后一页,显示的数目为:per_page+N
    • allow_empty_first_page:默认为True,允许第一页显示空白内容,如果设置为False,那么当object_list为空时,抛出EmptyPage错误
  2. 方法

    1. get_page(self, number)

      • numer:指定页码数,正确值应该是大于等于1的整数

      返回指定number的Page对象,同时还处理超出范围和无效页码,如果number不是数字,则返回第一页,如果number为负数或大于最大页数,则返回最后一页。

    2. page(self, number)

      • numer:指定页码数,正确值应该是大于等于1的整数

      返回指定number的Page对象,不处理异常,如果number无效,则抛出 InvalidPage 错误

  3. 属性

    1. count:项目总条数,调用该属性时,优先调用object_list的count()方法,没有count()方法才尝试len(object_list)方法
    2. num_pages:总页码数
    3. page_range:从1开始的页码迭代器,代码:range(1, self.num_pages + 1)

Page类

一般情况下,不会手动实例化该类,而是通过Paginator的page或者get_page方法获取

  1. 初始化方法__init__(self, object_list, number, paginator):

    • object_list:当页显示的object_list对象,object_list可以是QuerySet、带有count()或__len__()方法的列表、元组或其它可切片的对象
    • number:页码数
    • paginator:Paginator类的实例
  2. 方法

    主要的方法都是用来做逻辑判断的,以此来决定页面中显示的诸如:上一页、下一页,首页,末页等

    1. has_next():如果有下一页则返回True
    2. has_previous():如果有上一页,则返回True
    3. has_other_pages():如果有上一页或者下一页,则返回True
    4. next_page_number():返回下一页编号,如果下一页不存在则引发 InvalidPage 错误
    5. previous_page_number():返回上一页编号,如果上一页不存在则引发 InvalidPage 错误
    6. start_index() :返回页面上第一个对象的从1开始的索引,相对于分页器列表中的所有对象。例如,当为每页包含2个对象的5个对象的列表进行分页时,第二个页面Page对象的start_index返回3
    7. end_index() :返回页面上最后一个对象的从1开始的索引,相对于分页器列表中的所有对象。例如,当为每页包含2个对象的5个对象的列表进行分页时,第二个页面Page对象的end_index返回4
  3. 属性

    其实就是初始化方法中的3个参数

    1. object_list:对应的object_list
    2. number:该对象的所处的页码数,从1开始
    3. paginator:关联的Paginator实例

实时效果反馈

1. 关于Django工具,分页说法错误的是?

A 实现分页效果可以有多种方式

B Page类需要手动创建获取

C Paginator类可以获取Page对象

D Page类中可以通过object_list获取数据

答案

1=>B

 

北京市昌平区回龙观镇南店村综合商业楼2楼226室

©2014-2023 百战卓越(北京)科技有限公司 All Rights Reserved.

京ICP备14032124号-2