栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

30.博客小案例功能升级——分页功能的实现

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

30.博客小案例功能升级——分页功能的实现

上一文中实现了一个简易版的博客小案例,但是后面有粉丝私信我说博客列表页如果数据多的话很不好看,问我能不能做个分页!
话不多说——安排~

拓展——分页功能的实现

Django提供了一个新的类来帮助你管理分页数据,这个类存放在django/core/paginator.py.它可以接收列表、元组或其它可迭代的对象。

(1)简单讲解: 第一部分(导入&&实例化分页对象&&分页对象常用方法)
# 导入
from django.core.paginator import Paginator


# 模拟数据库中数据
li = ["数据一", "数据二", "数据三", "数据四", "数据五", "数据六", "数据七"]

# 实例化分页对象:3条数据为一页
paginator = Paginator(li, 3)
print(paginator)

# 分页对象的常用方法:
print(paginator.count)       # 分页对象总共含有元素个数
print(paginator.num_pages)   # 返回分页之后的总页数
print(paginator.page_range)  # 分页对象的可迭代范围
print(paginator.object_list) # 分页对象的数据查询集(一个元素列表的形式)

第二部分(实例化第n页对象&&第n页对象常用方法)
# 实例化第n页对象
page = paginator.page(1)     # 获取分页对象的第一页对象
print(page)
page2 = paginator.page(2)

# 第n页的实例对象常用方法:
print(page.object_list)      # 当前页的数据查询集(一个元素列表的形式)
print(page.number)           # 第n页对象的页码值

print(page.has_previous())   # 第一页对象是否有前一页
print(page.has_other_pages())# 第一页对象是否有其他页
print(page.has_next())       # 第一页对象是否有下一页
print(page.next_page_number())# 第一页对象的下一页页码值
print(page2.previous_page_number()) # 第二页对象的上一页页码值
print(page.start_index())    # 第一页对象含有数据元素的开始索引值
print(page.end_index())      # 第一页对象含有数据元素的结束索引值

第三部分(如何通过第n页对象获取其分页对象)

分页的实例对象paginator和第n页的实例对象page二者很多方法不互通。
那么有个问题就是——如果你当前操作的是第n页的实例对象page,但是需要使用分页的实例对象paginator的一些方法,该怎么办呢?

上面我们知道分页的实例对象paginator长如下模样:


第n页的实例对象长如下模样:

range(1, 4)

我们只需进行如下操作即可:

paginator = Paginator(li, 3)
page = paginator.page(1)
print(page.paginator)

(2)使用: ①视图函数的修改:

②对应路由的修改:

③前端页面的修改:

小注意:所有对于博客列表页的跳转都要相应修改哦~

以修改首页中的博客列表页的跳转为例(别的坑自己填哦!):

实现效果:


点击下一页:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/355789.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号