内置分页

views

  1. from django.core.paginator import Paginator,Page,PageNotAnInteger
  2.  
  3. def DJs_pages(request):
  4. nid=request.GET.get('nid')
  5. user_list=models.UserInfo.objects.all()
  6. paginator=Paginator(user_list,2)
  7. # .per_page: 每页显示条目数量
  8. # .count: 数据总个数
  9. # .num_pages:总页数
  10. # .page_range:总页数的索引范围,如: (1,10),(1,200) 一次性显现有多少页显示多少个页码
  11. # .page: page对象
  12. if nid:
  13. a=paginator.page(nid) #显示第x页 a相当于一个列表里面是一页的内容
  14. else:
  15. a=paginator.page(1)
  16.  
  17. # has_next 是否有下一页
  18. # next_page_number 下一页页码
  19. # has_previous 是否有上一页
  20. # previous_page_number 上一页页码
  21. # object_list 分页之后的数据列表
  22. # number 当前页
  23. # paginator paginator对象
  24. return render(request,'pages.html',{'a':a})

template

  1. 1 <!DOCTYPE html>
  2. 2 <html lang="en">
  3. 3 <head>
  4. 4 <meta charset="UTF-8">
  5. 5 <title>Title</title>
  6. 6 </head>
  7. 7 <body>
  8. 8 <h1>用户列表</h1>
  9. 9 <ul>
  10. 10 {%for row in a %}
  11. 11 <li>{{row.nid}}==={{row.user}}==={{row.age}}===={{row.ug.title}}</li>
  12. 12 {%endfor%}
  13. 13
  14. 14 </ul>
  15. 15 <div>
  16. 16 {%if a.has_next %}
  17. 17 <a href="/pages/?nid={{a.next_page_number}}">下一页</a>
  18. 18 {%endif%}
  19. 19
  20. 20 </div>
  21. 21 <div>
  22. 22 {%for row in a.paginator.page_range %}
  23. 23 <a href="/pages/?nid={{row}}">{{row}}</a>
  24. 24 {%endfor%}
  25. 25
  26. 26 </div>
  27. 27 </body>
  28. 28 </html>

自定义分页

views

  1. 1 from creat_tool.paging import PageInfo
  2. 2
  3. 3 def custom_page(request):
  4. 4
  5. 5 all_num=models.UserInfo.objects.all().count()
  6. 6 #page_num=math.ceil(all_num/3)
  7. 7 pageinfo=PageInfo(request.GET.get('page'),1,all_num,2,'/custom/') #(current_page,每页几个数据,一共多少数据,显示几个页码,url)
  8. 8 #current_page=request.GET.get('page')
  9. 9 #每页显示多少数据
  10. 10 #current_page=int(current_page)
  11. 11 #per_page=3
  12. 12 #0-3 3-6 6-9
  13. 13 user_list = models.UserInfo.objects.all()[pageinfo.start():pageinfo.end()]#[起始位置:结束位置]
  14. 14 return render(request, 'custom.html', {'user_list': user_list,'pageinfo':pageinfo})

class

  1. import math
  2. class PageInfo():
  3. def __init__(self,curret_page,per_page_ha_num,all_num,show_page,base_url):
  4. try:
  5. self.curret_page=int(curret_page) #1.将str数字转换为数字 2.不是数字的报错执行except
  6. except Exception as e:
  7. self.curret_page=1
  8. self.per_page_ha_num=per_page_ha_num
  9. self.all_num=all_num
  10. self.all_page_num=math.ceil(self.all_num / self.per_page_ha_num)
  11. self.show_page=int(show_page/2)
  12. self.base_url=base_url
  13. def start(self):
  14. return (self.curret_page-1)*self.per_page_ha_num
  15. def end(self):
  16. return self.curret_page*self.per_page_ha_num
  17.  
  18. def pagers(self):
  19. star = self.curret_page - self.show_page
  20.  
  21. end = self.curret_page + self.show_page
  22.  
  23. if star <= 0:
  24. star = 1
  25. if end > self.all_page_num:
  26. end = self.all_page_num
  27.  
  28. page_list = []
  29. if self.curret_page <= 1:
  30. # prev = '<a href="">上一页</a>'
  31. prev = '<li><a href="#" aria-label="Previous"><span aria-hidden="true">&laquo;</span>上一页</a></li>'
  32.  
  33. else:
  34. # prev = '<a href="%s?page=%s">上一页</a>' %(self.base_url,self.curret_page-1)
  35. prev = '<li><a href="%s?page=%s" aria-label="Previous"><span aria-hidden="true">&laquo;</span>上一页</a></li>' % (
  36. self.base_url, self.curret_page - 1)
  37.  
  38. page_list.append(prev)
  39.  
  40. # for i in range(1,self.all_page_num+1):
  41. for i in range(star, end + 1):
  42. if i == self.curret_page:
  43. # temp='<a style="background-color:pink" href="%s?page=%s">%s</a>' %(self.base_url,i,i)
  44. temp = ' <li class="active" ><a href="%s?page=%s">%s</a></li>' % (
  45. self.base_url, i, i) # <li class="active" > 强调当前页
  46. else:
  47. temp = ' <li><a href="%s?page=%s">%s</a></li>' % (self.base_url, i, i)
  48. # temp = '<a href="%s?page=%s">%s</a>' % (self.base_url,i, i)
  49. page_list.append(temp)
  50.  
  51. if self.curret_page >= self.all_page_num:
  52. # prev = '<a href=""> 下一页</a>'
  53. prev = '<li><a href="#" aria-label="Next"><span aria-hidden="true">&laquo;</span></a></li>'
  54. prev = ' <li><a href="#" aria-label="Next"><span aria-hidden="true">&raquo;</span>下一页</a></li>'
  55. else:
  56. # prev = '<a href="%s?page=%s">下一页</a>' % (self.base_url,self.curret_page + 1)
  57. prev = '<li><a href="%s?page=%s" aria-label="Next"><span aria-hidden="true">&raquo;</span>下一页</a></li>' % (
  58. self.base_url, self.curret_page + 1)
  59. page_list.append(prev)
  60. return ''.join(page_list)

template

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <link rel="stylesheet" href="/static/bootstrap-3.4.1-dist/css/bootstrap.css">
  7.  
  8. </head>
  9. <body>
  10.  
  11. <h1>用户列表</h1>
  12. <ul>
  13. {%for row in user_list %}
  14. <li>{{row.nid}}==={{row.user}}==={{row.age}}===={{row.ug.title}}</li>
  15. {%endfor%}
  16.  
  17. </ul>
  18. <!-- {{pageinfo.pagers|safe}}-->
  19. <!-- 传类的对象过来,调用的方法就自动显示-->
  20.  
  21. <nav aria-label="Page navigation">
  22. <ul class="pagination">
  23.  
  24. {{pageinfo.pagers|safe}}
  25.  
  26. </ul>
  27. </nav>
  28.  
  29. </body>
  30. </html>

Djang内置分页和自定义分页的更多相关文章

  1. python/Djangof分页与自定义分页

    python/Djangof分页与自定义分页 Django分页 ##============================================分页==================== ...

  2. Linux常用基本命令:三剑客命令之-awk内置变量与自定义变量

    AWK中,变量分为两种:内置变量与自定义变量. 常见的内置变量有: FS:输入字段分隔符, 默认为空白字符 OFS:输出字段分隔符, 默认为空白字符 RS:输入记录分隔符(输入换行符), 指定输入时的 ...

  3. Angular中的内置指令和自定义指令

    NG中的指令,到底是什么(what)? 为什么会有(why)?以及怎样使用(how)? What: 在NG中,指令扩展HTML功能,为 DOM 元素调用方法.定义行为绑定数据等. Why: 最大程度减 ...

  4. VUE:内置指令与自定义指令

    VUE:内置指令与自定义指令 常用的内置指令 1)v:text 更新元素的 textContent 2)v-html 更新元素的 innerHTML 3)v-if 如果为true,当前标签才会输出到页 ...

  5. Java注解-元数据、注解分类、内置注解和自定义注解|乐字节

    大家好,我是乐字节的小乐,上次说过了Java多态的6大特性|乐字节,接下来我们来看看Java编程里的注解. Java注解有以下几个知识点: 元数据 注解的分类 内置注解 自定义注解 注解处理器 Ser ...

  6. form-create教程:给内置组件和自定义组件添加事件

    本文将介绍form-create如何给内置组件和自定义组件添加事件 form-create 是一个可以通过 JSON 生成具有动态渲染.数据收集.验证和提交功能的表单生成器.并且支持生成任何 Vue ...

  7. 9.1hadoop 内置计数器、自定义枚举计数器、Streaming计数器

    1.1  计数器 计数器的作用是用来统计数量的,用于记录特定事件的次数,分为内置计数器.自定义java枚举计数器.自定义Stream计数器三大类.用于质量分析,或应用级统计.分析计数器的值比分析一堆日 ...

  8. MVC下分页的自定义分页一种实现

    1.引言 在MVC开发中我们经常会对数据进行分页的展示.通过分页我们可以从服务端获取指定的数据来进行展示.这样既节约了数据库查询的时间也节约了网络传输的数据量.在MVC开发中使用的比较多的应该是MVC ...

  9. 5.Smart使用内置函数或者自定义函数

    1.使用内置函数 例如使用date函数 {"Y-m-d"|date:$time}格式{第一个参数|方法:第二个参数:第三个参数}即可转换成 2016-07-19  2.使用resi ...

随机推荐

  1. Mybatis框架基础入门(二)--架构简介

    mybatis配置 SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息. mapper.xml文件即sql映射文件,文件中配置了操作数据库的 ...

  2. jQuery--筛选【过滤函数】

    之前选择器可以完成的功能,筛选也提供了相同的函数 筛选函数介绍 eq(index|-index) 类似:eq()index:正数,从头开始获得指定所有的元素,从0算起,0表示第一个-index:负数, ...

  3. ACM - 最短路 - CodeForces 295B Greg and Graph

    CodeForces 295B Greg and Graph 题解 \(Floyd\) 算法是一种基于动态规划的算法,以此题为例介绍最短路算法中的 \(Floyd\) 算法. 我们考虑给定一个图,要找 ...

  4. js技术之获取字符串中某个字符的位置(lastIndexOf()方法 和 indexOf() 方法)

    一.lastIndexOf()方法 1.作用: 方法可返回 一个指定的字符串值 在字符串中最后出现的位置.从左往右查. 2.返回: 一个正整数.或者 -1. 3.语法: stringObject.la ...

  5. display:inline-block两端对齐 实现列表

    做一个ul li 列表类似这样的平时经常会用到 要是用浮动做还是比较简单的直接左右浮动,清除浮动就可以搞定了,因为最近用display:inline-block用的比较顺手,所以就尝试一下.通过tex ...

  6. 动态规划 洛谷P4017 最大食物链计数——图上动态规划 拓扑排序

    洛谷P4017 最大食物链计数 这是洛谷一题普及/提高-的题目,也是我第一次做的一题 图上动态规划/拓扑排序 ,我认为这题是很好的学习拓扑排序的题目. 在这题中,我学到了几个名词,入度,出度,及没有环 ...

  7. Jar 包下载以及 maven jar 包配置

    学习内容: jar包下载是我们必须掌握的一个内容,不管是使用Maven项目还是其他项目,一般都需要引入外部的 jar 包 jar包下载 下载地址(打不开网址的直接百度搜索 maven reposito ...

  8. 深入研究const(es6特性)

    const  申明常量 var str = 'es6' console.log(window.str) // es6 属于顶层对象window const不属于顶层对象window const str ...

  9. 静态变量和成员变量的区别、final修饰特点、创建对象的内存图、静态内存图

    静态变量和成员变量的区别* 静态变量也叫类变量  成员变量也叫对象变量* A:所属不同 * 静态变量属于类,所以也称为为类变量 * 成员变量属于对象,所以也称为实例变量(对象变量)* B:内存中位置不 ...

  10. 使用vue-cli构建工具构建vue项目时候组件的使用

    <template> <div class="contains"> <!-- <div class="main"> & ...