django提供了分页函数,但是功能较少,因此我对其进行了扩展

views.py

 1 from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
 2 USER_LIST = []
 3 for i in range(1,999):
 4     temp = {'name':'root'+str(i),'age':i}
 5     USER_LIST.append(temp)
 6 #自定制的继承于Paginator的类,增加了显示页码功能
 7 class CustomPaginator(Paginator):
 8     def __init__(self,current_page, per_pager_num,*args,**kwargs):
 9         # 当前页
10         self.current_page = int(current_page)
11         # 最多显示的页码数量 11
12         self.per_pager_num = int(per_pager_num)
13         super(CustomPaginator,self).__init__(*args,**kwargs)
14     def pager_num_range(self):
15         # 当前页
16         #self.current_page
17         # 最多显示的页码数量 11
18         #self.per_pager_num
19         # 总页数
20         # self.num_pages
21         if self.num_pages < self.per_pager_num:
22             return range(1,self.num_pages+1)
23         # 总页数特别多 5
24         part = int(self.per_pager_num/2)
25         if self.current_page <= part:
26             return range(1,self.per_pager_num+1)
27         if (self.current_page + part) > self.num_pages:
28             return range(self.num_pages-self.per_pager_num+1,self.num_pages+1)
29         return range(self.current_page-part,self.current_page+part+1)
30
31 def FenYe(request):
32
33     current_page = request.GET.get('p')
34     # Paginator对象
35     paginator = CustomPaginator(current_page,11,USER_LIST,10)#调用自定义类参数为(当前页码,显示的页码数,总的数据,每页显示的数据条数)
36     try:
37         # Page对象
38         posts = paginator.page(current_page)
39
40     except PageNotAnInteger:
41         posts = paginator.page(1)
42     except EmptyPage:
43         posts = paginator.page(paginator.num_pages)
44
45     return render(request, 'fenye.html', {'posts': posts})

fenye.html:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>fenye1</title>
 6 </head>
 7 <body>
 8         {% for item in posts %}
 9             <li>{{ item.name }}--{{ item.age }}</li>
10         {% endfor %}
11     {% include 'include/pager.html' %}
12
13 </body>
14 </html>

pager.html

 1  {% if posts.has_previous %}
 2     <a href="/fenye1?p={{ posts.previous_page_number }}">上一页</a>
 3     {% else %}
 4     <a href="#">上一页</a>
 5 {% endif %}
 6 {% for i in posts.paginator.pager_num_range %}
 7     {% if i == posts.number  %}
 8         <a style="font-size: 30px;" href="/fenye1?p={{ i }}">{{ i }}</a>
 9     {% else %}
10         <a href="/fenye1?p={{ i }}">{{ i }}</a>
11     {% endif %}
12 {% endfor %}
13
14 {% if posts.has_next %}
15     <a href="/fenye1?p={{ posts.next_page_number }}">下一页</a>
16 {% endif %}
17 <span>
18     {{ posts.number }}/{{ posts.paginator.num_pages }}
19 </span>

Paginator对象

  

全部数据:USER_LIST,=》得出共有多少条数据per_page: 每页显示条目数量count:    数据总个数num_pages:总页数page_range:总页数的索引范围,如: (1,10),(1,200)page:     page对象(是否具有下一页;是否有上一页;)

Page对象

# has_next              是否有下一页# next_page_number      下一页页码# has_previous          是否有上一页# previous_page_number  上一页页码# object_list           分页之后的数据列表,已经切片好的数据# number                当前页# paginator             paginator对象

转载于:https://www.cnblogs.com/GodLv/p/9574394.html

Django-分页扩展相关推荐

  1. django 高级扩展-中间件-上传图片-分页-富文本-celery

    """ django 高级扩展一.静态文件 1.css,js,json,图片,字体等 2.配置setting,在最底下设置静态文件目录,写入下面代码 #配置静态文件目录 ...

  2. 2019.03.20 mvt,Django分页

    MVT模式 MVT各部分的功能: M全拼为Model,与MVC中的M功能相同,负责和数据库交互,进行数据处理. V全拼为View,与MVC中的C功能相同,接收请求,进行业务处理,返回响应. T全拼为T ...

  3. 第八篇Django分页

    Django分页 1.复杂版 data = []for i in range(1, 302):tmp = {"id": i, "name": "ale ...

  4. Django 分页查询并返回jsons数据,中文乱码解决方法

    Django 分页查询并返回jsons数据,中文乱码解决方法 参考文章: (1)Django 分页查询并返回jsons数据,中文乱码解决方法 (2)https://www.cnblogs.com/jo ...

  5. Django可扩展吗? [关闭]

    我正在使用Django构建Web应用程序. 我选择Django的原因是: 我想使用免费/开源工具. 我喜欢Python,并认为它是一种长期的语言,而对于Ruby,我不确定,PHP似乎是一个学习上的麻烦 ...

  6. django ajax 查询,Django分页和Ajax查询

    在Django中,实现分页以在多个页面上显示查询项目是非常简单的.使用Ajax仅更新实际发生更改的页面位,而不是每次加载整个页面也是非常直接的.但是,当我们将两者结合在一起时,我发现它有点问题.Dja ...

  7. Django分页+增删改查

    Django分页+增删改查 演示 源码下载地址:https://download.csdn.net/download/qq_35622606/87719248 其他小笔记: django-admin. ...

  8. django分页实现

    Django分页 Django提供了一个类Paginator用于分页,但Paginator并不具体管理具体的页的处理,而是使用Page对象管理具体页面.下面我们以一个具体的例子来说明一下分页的实现 文 ...

  9. django分页查询

    Django分页查询(整合vue) 一.django部分 在view.py里添加分页查询方法 from django.http import JsonResponse from django.view ...

  10. Django中扩展Paginator实现分页

    Django中已经实现了很多功能,基本上只要我们需要的功能,都能够找到相应的包.要在Django中实现分页显示,只需要简单地使用Paginator就可以实现了. 首先,需要在应用的views.py中添 ...

最新文章

  1. 爱迪生欺骗了世界! ----马云给雅虎员工演讲
  2. 单目可见光静默活体检测 Binary or Auxiliary Supervision论文解读
  3. mysql恢复数据库 慢_Mysqldump导入数据库很慢的解决办法
  4. 【英语学习】【医学】无机化学 - 化合物命名(3) - 含氧酸/无氧酸
  5. 非索引列上的统计 第二篇
  6. vue实现导出excel
  7. hive sql 正则表达式
  8. 【转】代价曲线的理解
  9. win2003修改密码后提示确认用户名及域无误_周知!贵州高考志愿填报系统提示!...
  10. PHP全国快递寄件接口,1天接入四通一达,极兔,宅急送,德邦,京东,天天
  11. jyhtfkuy5987tgoluigl.kjylghliuygliuylio
  12. 鼠标滚轮事件onmouewheel
  13. Python数据结构与算法题目 打印二叉树的左视图 打印二叉树的右视图 树的左视图 树的右视图
  14. 微信反编译(二)源码还原
  15. 浅谈手机内存不够的解决方法--我的手机是红米note5
  16. spring配置bean
  17. Android Platform Architecture 安卓平台架构
  18. 【按键精灵篇】如何做一个自动打开APP进入注册页面自动输入自己手机号
  19. 实战:如何运营一家淘宝店铺?
  20. 2022年全球市场单线激光雷达总体规模、主要生产商、主要地区、产品和应用细分研究报告

热门文章

  1. Python操作excel进行插入、删除行操作实例演示,利用xlwings库实现
  2. leetCode C++ 49. 字母异位词分组 给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。
  3. Keil编译报错:Cannot open include file: 'stdbool.h': No such file or directory问题解决
  4. Set常用用法元素检索
  5. baidu+app+per+android,百度移动统计|移动应用APP统计|android统计分析|iOS统计分析
  6. git-fork下来的项目(拷贝到本地 根据原来的库更新)
  7. Soj题目分类 python代码)
  8. 适配器模式、代理模式、装饰器模式使用场景区别
  9. Multimap的遍历和删除(很重要)
  10. php数组转为js json,php如何将数组转为json数组,php数组转为js数组