Django分页功能(Paginator类)

today,我们实现分页的功能

分页的实现不仅提高了用户体验,还是减轻数据库读取数据的压力

Django提供了一些类来帮助您管理分页数据

  • Paginator实现分页的具体操作
from django.core.paginator import  Paginator
#获取要分页的查询集 Blog是一个model对象
blogs_all_list=Blog.objects.all()
#实例化一个对象每10页进行分页 
paginator=Paginator(blogs_all_list,10)
 #获取get请求page的值,后面的1是默认代表默认get请求到的page值是1
page_num = request.GET.get('page', 1) 
#根据分页显示对应页码 获取查询集对应的范围
page_of_blogs=paginator.get_page(page_num)
传给模板文件是page_of_blogs 是一个page对象,可以理解成只含有10个查询集中的对象的集合
  • page|paginator属性和方法
**以下 page_of_blogs缩写成Page**
Paginator 类中常用的属性 即Page.paginator
Page.paginator.count  
返回当前要分页对象的具体个数
Page.paginator.num_pages 
 返回分页的2总页数。
 
page对象常用的方法即page_of_blogs 我们可以在视图中获取
Page.has_next()
True如果有下一页则返回。
Page.has_previous()
True如果有上一页,则返回。
Page.has_other_pages()
True如果有下一页或上一页,则返回。
Page.next_page_number()
返回下一页编号。InvalidPage如果下一页不存在则引发。
Page.previous_page_number()
返回上一页编号。InvalidPage如果前一页不存在则引发。
Page.start_index()
返回页面上第一个对象的从1开始的索引,相对于分页器列表中的所有对象。例如,当为每页包含2个对象的5个对象的列表进行分页时,start_index()将返回第二个页面 3。
Page.end_index()
返回页面上最后一个对象的从1开始的索引,相对于分页器列表中的所有对象。例如,当为每页包含2个对象的5个对象的列表进行分页时,end_index()将返回第二个页面 4。

  • 分页优化
  1. 当前页高亮
  2. 不要过多页码选择,影响页面布局,只显示当前页周围两个并可以直接跳转第一页和最后一页

具体代码不展示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值