2019独角兽企业重金招聘Python工程师标准>>>

pager.py

# -*- coding:utf8 -*-
"""
引用说明:
数据总个数:total_count
数据总页数:num_pages
每页显示的行数:perPageItemNum【默认显示10行】
最多显示页码数:maxPageNum【默认显示7个页码数】
默认返回页面:get_people.html【如需修改请批量替换】
"""
class Pagination(object):# 需要传入的值:数据总个数、当前页、每页显示行数、最多显示页码def __init__(self,totalCount,currentPage,perPageItemNum=10,maxPageNum=3):# 数据总个数self.total_count = totalCounttry:# 当前页v = int(currentPage)if v <= 0:v = 1self.current_page = vexcept Exception as e:self.current_page = 1# 每页显示的行数self.per_page_item_num = perPageItemNum# 最多显示页面self.max_page_num = maxPageNum#页数显示切片起始位def start(self):return (self.current_page-1) * self.per_page_item_num# 页数显示切片结束位def end(self):return self.current_page * self.per_page_item_num@propertydef num_pages(self):"""总页数"""a,b = divmod(self.total_count,self.per_page_item_num)if b == 0:return areturn a+1#页码范围def pager_num_range(self):if self.num_pages < self.max_page_num:return range(1,self.num_pages+1)part = int(self.max_page_num/2)if self.current_page <= part:return range(1,self.max_page_num+1)if (self.current_page + part) > self.num_pages:return range(self.num_pages-self.max_page_num+1,self.num_pages+1)return range(self.current_page-part,self.current_page+part+1)def page_str(self):page_list = []first = "<li><a href='get_people.html?p=1'>首页</a></li>"page_list.append(first)if self.current_page == 1:prev = "<li><a href='#'>上一页</a></li>"else:prev = "<li><a href='get_people.html?p=%s'>上一页</a></li>" %(self.current_page-1,)page_list.append(prev)for i in self.pager_num_range():if i == self.current_page:temp = "<li class='active'><a href='get_people.html?p=%s'>%s</a></li>" %(i,i)else:temp = "<li><a href='get_people.html?p=%s'>%s</a></li>" % (i, i)page_list.append(temp)if self.current_page == self.num_pages:nex = "<li><a href='#'>下一页</a></li>"else:nex = "<li><a href='get_people.html?p=%s'>下一页</a></li>" % (self.current_page + 1,)page_list.append(nex)last = "<li><a href='get_people.html?p=%s'>尾页</a></li>" %(self.num_pages,)page_list.append(last)return ''.join(page_list)

调用示例

from APP.views.pager import Pagination
#引用分页模块
def get_people(request):                                        #成员展示Gro_list = models.Group.objects.all()                                   #获取所有群组列表Dep_list = models.Department.objects.all()                              #获取所有部门列表people_list = models.People.objects.all()                               #获取所有人员列表people_num = models.People.objects.count()                              #获取所有人员数量#人员分页显示dq_Page = request.GET.get('p')                                          #获取当前页if dq_Page==None:dq_Page=1                                              #第一次打开无页码传入是默认打开显示第一页page_obj = Pagination(people_num,dq_Page)                               #引入分页模块传入人员数量和当前页data_list = people_list[page_obj.start():page_obj.end()]                #切片获取当前页应该显示人员列表return render(request,'get_people.html',locals())

分页前端页面代码

<link rel="stylesheet" href="../static/bootstrap/dist/css/bootstrap.css">
<script src="../static/js/jquery-3.3.1.min.js"></script>
<script src="../static/bootstrap/dist/js/bootstrap.min.js"></script>
<!--引用样式模块--><div class="w_page"><ul class="pagination pagination-sm">{{ page_obj.page_str|safe }}</ul><div class="page_tag">{{ dq_Page }}/{{ page_obj.num_pages }}</div>
</div>

转载于:https://my.oschina.net/zhaojunhui/blog/2906889

Django基础-数据分页相关推荐

  1. django基础知识之分页:

    分页 Django提供了一些类实现管理数据分页,这些类位于django/core/paginator.py中 Paginator对象 Paginator(列表,int):返回分页对象,参数为列表数据, ...

  2. Django 基础(12)-Django drf 分页查询(批量查询)、自定义分页器

    文章目录 Django drf 分页查询(批量查询) PageNumberPagination:普通分页 Django 自定义分页器 自定义批量查询的返回结构 LimitOffsetPaginatio ...

  3. 学一点django基础

    学一点Django基础 目录 文章目录 目录 一.Django框架的介绍 Django的安装 Django框架开发 创建项目的指令 Django项目的目录结构 URL 介绍 视图函数(view) Dj ...

  4. Django基础(11): 表单集合Formset的高级用法详解

    Formset(表单集)是多个表单的集合.Formset在Web开发中应用很普遍,它可以让用户在同一个页面上提交多张表单,一键添加多个数据,比如一个页面上添加多个用户信息.今天小编我就介绍下Djang ...

  5. django基础之分页器

    django基础之分页器 一:分页器 1.1 分页器基本使用 1.2 分页导航实现 1.3 自定义分页器类 二:ListView视图 三:Paginator和Page类 3.1 Paginator常用 ...

  6. Web框架之Django_01初识(三大主流web框架、Django安装、Django项目创建方式及其相关配置、Django基础三件套:HttpResponse、render、redirect)

    阅读目录 摘要: Web框架概述 Django简介 Django项目创建 Django基础必备三件套(HttpResponse.render.redirect) 一.Web框架概述: Python三大 ...

  7. python路由编程_Python Django基础二之URL路由系统

    MVC和MTV框架 MVC Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型负责业务 ...

  8. Django基础核心技术之Model模型的介绍与设计

    Django基础核心技术之Model模型的介绍与设计 原创: Yunbo Shi Python Web与Django开发 2018-05-03 Django网络应用开发的5项基础核心技术包括模型(Mo ...

  9. django之快速分页

    本文介绍djanog两种分页,第一是普通分页,第二是使用haystack全文检索的分页. 1.django自带分页功能,这个功能非常好用. 基本知识点: Django提供了数据分页的类,这些类被定义在 ...

最新文章

  1. WINDOWS下的各类HOOK
  2. 条件变量为什么要和互斥锁一起用
  3. 2.2.1 mini-batch
  4. 电脑分屏软件_一招定鲜 | 电脑实现分屏解决了办公和娱乐
  5. UVALive 3026 Period (KMP算法简介)
  6. 【Nginx】解决 504 Gateway Time-out
  7. java面试题2014_Java生态系统– 2014年我的5大亮点
  8. 学大数据找IT十八掌
  9. iphone短信尚未送达_iPhone开启这个功能,从此告别垃圾短信骚扰!
  10. 【Java】用for循环实现1+2+3......+100 =
  11. 很冷门,但非常实用的 Python 库
  12. 【白皮书分享】抖音企业号-服装行业白皮书.pdf(附下载链接)
  13. loj10036. 「一本通 2.1 练习 2」Seek the Name, Seek the Fame
  14. JavaScript(二)基本概念
  15. java中拦截器和过滤器详解
  16. 布谷鸟过滤器java使用_Redis布隆过滤器与布谷鸟过滤器
  17. matlab计算中值 众值,基于GPS运动摄像机数据确定道路圆曲线半径及行车视距的方法与流程...
  18. 盘点那些年用过的机械键盘,为什么我最爱Keychron键盘呢
  19. 2021年最新最全APP各大安卓市场应用首发规则
  20. 人人商城二次开发 各个装修模块diypage的自定义样式

热门文章

  1. 对XX证券报关于物联网操作系统的几个问题的答复
  2. OpenLayers 动态添加标记(Marker)和信息窗(Popup)
  3. 使用 Strace 调试工具
  4. 在ASP.NET中自动给URL地址加上超链接
  5. asp.net三种重定向方法的总结
  6. 使用 Global.asax 文件
  7. bug诞生记——信号(signal)处理导致死锁
  8. Ubuntu 14.04 64位机上用Caffe+MNIST训练Lenet网络操作步骤
  9. RANSAC鲁棒参数估计
  10. findler mac 隐藏文件_Fiddler使用文档