Django 分页Paginator的简单用法

匿名 (未验证) 提交于 2019-12-02 23:49:02

最近的项目中用到了分页功能,用Django自带的Paginator来实现简单的分页。

第一步,导入Paginator及相关异常模块

from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage

Paginator:分页器对象

PageNotAnInteger:表示传过来的页码不是Integer类型会引发该异常。

EmptyPage:表示页码不在有效范围时(即页码过大或者过小,数据为空时)会引发该异常。

第二步,分页功能编写

其中:data是数据,list类型。start是页数,int类型。limit每页的个数,int类型

p = Paginator(data, limit)

p为分页器对象,它的属性包括:

count:返回对象列表(数据)的长度

num_pages:返回总页数

page_range:返回页码列表

response = {}     p = Paginator(data, limit)     try:         new_data = p.page(start)     except PageNotAnInteger as e:         print e         # 页码不是整数返回第一页         new_data = p.page(1)     except EmptyPage as e:         print e         total_num = p.num_pages         if start > total_num:             # 大于总页码 返回最后一页数据返回             new_data = p.page(total_num)         else:             new_data = p.page(1)     print new_data, 'new_data'     response['info'] = new_data.object_list

new_data为page的一个对象,它的常用属性为:

  • object_list:同样是指对象列表,不过只包含当前页的对象
  • number:当前页面的页码
  • paginator :指对应的分页器对象(Paginator )

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!