django分页器使用

https://docs.djangoproject.com/en/3.2/topics/pagination/

Django 提供了高级和低级方法来帮助您管理分页数据——即,分成多个页面的数据,并带有“上一页/下一页”链接。

Paginator

在底层,所有分页方法都使用 Paginator 类.

可以为 Paginator() 提供列表/元组、Django QuerySet 或任何其他具有 count()__len__() 方法的对象。

当确定传递的对象中包含的对象数量时, Paginator 将首先尝试调用 count() ,如果传递的对象没有 count() 方法,则使用 len() 。这允许 Django 的 QuerySet 等对象在可用时使用更高效的 count() 方法。

Paginator方法/属性

# 返回分页中所有数据的总数
pg.count

# 每页多少条数据
pg.per_page

# 总共有多少页
pg.num_pagess

# 返回某一页(返回的是一个Page()对象)
pg.page(<第几页>)

Page

方法/属性

# 返回Page类对应的paginator对象
p.paginator

# 当前页中的数据
p.object_list

# 是否有下一页
p.has_next()

# 是否有上一页
p.has_previous()

# 下一页页数
p.next_page_number()

# 上一页页数
p.previous_page_number()

直接上例子~

# 导入类
>>> from django.core.paginator import Paginator

# 按照每页2条数据来分页图书
>>> pg = Paginator(PeopleInfo.objects.all(), 2)

# 分页对象中数据的总数,这个就是你给定的PeopleInfo.objects.all()获取的数据总数
>>> pg.count
17

# 总有多少页
>>> pg.num_pages
9

# 拿到第一页对象Page
>>> page1 = pg.page(1) 
>>> page1
<Page 1 of 9>

# 获取第一页中的数据
>>> page1.object_list
<QuerySet [<PeopleInfo: 郭靖>, <PeopleInfo: 黄蓉>]>


posted @ 2023-07-18 09:08  蕝戀  阅读(8)  评论(0编辑  收藏  举报