当前位置:首页 » 《资源分享》 » 正文

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

10 人参与  2021年09月26日 11:03  分类 : 《资源分享》  评论

点击全文阅读


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

拓展——分页功能的实现

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长如下模样:

<django.core.paginator.Paginator object at 0x7f1b4dc0e0d0>

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

range(1, 4)

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

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

在这里插入图片描述

(2)使用:

①视图函数的修改:

在这里插入图片描述

②对应路由的修改:

在这里插入图片描述

③前端页面的修改:

在这里插入图片描述

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

以修改首页中的博客列表页的跳转为例(别的坑自己填哦!):
在这里插入图片描述

实现效果:

在这里插入图片描述
点击下一页:
在这里插入图片描述


点击全文阅读


本文链接:http://zhangshiyu.com/post/28692.html

对象  分页  数据  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1