Django实现分页显示效果


Posted in Python onOctober 31, 2019

Django中提供了一个类Paginator专门用来管理和处理分页数据,所以我们在使用之前先导入好相应的类,,另外这里我们也导入了待会会用到的处理异常的两个类 EmptyPage和PageNotAnInteger:

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

接着编写好视图函数test:

def test(request):
 course_list=CourseVideo.objects.all()
 #生成pagintor对象,定义每页显示10条记录
 paginator=Paginator(course_list,10)

 #获取当前的页码数,默认为1
 page=request.GET.get("page",1)

 #把当前的页码数转换为整数类型
 currentPage=int(page)

 try:
 video_list=paginator.page(page)#获取当前页码的记录
 except PageNotAnInteger:
 video_list=paginator.page(1)#如果用户输入的页码不是整数时,显示第1页的内容
 except EmptyPage:
 video_list=paginator.page(paginator.num_pages)#如果用户输入的页码不是整数时,显示第1页的内容
 
 return render(request, "test.html", locals())

接下来我们完成前端页面的逻辑,这里定义的文件为test.html:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>这里的标题</title>
</head>
<body>
  <div class="manageContent">
  {#数据显示div--start#}
  {% for video in video_list%}
  <div id="{{ video.vidoeContentId }}" class="content9">

   <div class="videomsg">
   <img src="/static/images/favicon.ico" alt="" />
   <span >{{ video.name }}</span>
   </div>
   <span class="courseTime" >{{ video.number }}</span>
   <span class="sourse" >{{ video.source }}</span>
   <span class="status" >{{ video.status }}</span>
   <div class="operate">
   <span style="cursor:pointer;" onclick="ShowUpDiv('upfileDiv','fade1','{{ video.id }}','{{ video.name }}')">上传</span>
   <span style="cursor:pointer;" onclick="ShowEditDiv('editDiv','editfade','{{ video.name }}','{{ video.number }}','{{ video.source }}','{{ video.status }}','{{ video.id }}')" >修改</span>
   <span style="cursor:pointer;" onclick="Showdetail('{{ video.id }}')" >详情</span>
   </div>

   <div id="{{ video.id }}" style="display: none ;overflow:scroll;overflow-x:hidden">

   </div>

  </div>
  {% endfor %}
  {#数据显示div--end#}
  
  {#显示分页导航栏--start#}
  <div class="kkk">
  <ul class="pagination" id="pager" >
   {#上一页按钮开始#}
   {# 如果当前页有上一页#}
   {% if video_list.has_previous %}
   {# 当前页的上一页按钮正常使用#}
   <li class="previous"><a href="/backstage/test/?page={{ video_list.previous_page_number }}" >上一页</a></li>
   {% else %}
   {# 当前页的不存在上一页时,上一页的按钮不可用#}
   <li class="previous disabled"><a href="#" >上一页</a></li>
   {% endif %}
   {#上一页按钮结束#}

   {# 页码开始#}
   {% for num in paginator.page_range %}
   {% if num == currentPage %}
    <li class="liactive"><a class="selected" href="/backstage/test/?page={{ num }}" >{{ num }}</a></li>
   {% else %}
    <li class="itemli"><a href="/backstage/test/?page={{ num }}" >{{ num }}</a></li>
   {% endif %}
   {% endfor %}
   {#页码结束#}

   {# 下一页按钮开始#}
   {% if video_list.has_next %}
   <li class="next"><a href="/backstage/test/?page={{ video_list.next_page_number }}" >下一页</a></li>
   {% else %}
   <li class="next disabled"><a href="#" >下一页</a></li>
   {% endif %}
   {# 下一页按钮结束#}
  </ul>
  </div>
  {#显示分页导航栏--end#}

  </div>

</body>
</html>

至此,分页显示的逻辑完成,更多关于Paginator的语法实例如下:

from django.core.paginator import Paginator
objects = ['john','paul','george','ringo','lucy','meiry','checy','wind','flow','rain']<br>
p = Paginator(objects,3) # 3条数据为一页,实例化分页对象
print p.count # 10 对象总共10个元素
print p.num_pages # 4 对象可分4页
print p.page_range # xrange(1, 5) 对象页的可迭代范围
 
page1 = p.page(1) # 取对象的第一分页对象
print page1.object_list # 第一分页对象的元素列表['john', 'paul', 'george']
print page1.number # 第一分页对象的当前页值 1
 
page2 = p.page(2) # 取对象的第二分页对象
print page2.object_list # 第二分页对象的元素列表 ['ringo', 'lucy', 'meiry']
print page2.number # 第二分页对象的当前页码值 2
 
print page1.has_previous() # 第一分页对象是否有前一页 False
print page1.has_other_pages() # 第一分页对象是否有其它页 True
 
print page2.has_previous() # 第二分页对象是否有前一页 True
print page2.has_next() # 第二分页对象是否有下一页 True
print page2.next_page_number() # 第二分页对象下一页码的值 3
print page2.previous_page_number() # 第二分页对象的上一页码值 1
print page2.start_index() # 第二分页对象的元素开始索引 4
print page2.end_index() # 第2分页对象的元素结束索引 6

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python 数据加密代码
Dec 24 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
安装python时MySQLdb报错的问题描述及解决方法
Mar 20 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
pycharm运行出现ImportError:No module named的解决方法
Oct 13 Python
详解python中的Turtle函数库
Nov 19 Python
python验证身份证信息实例代码
May 06 Python
python 控制Asterisk AMI接口外呼电话的例子
Aug 08 Python
Django 拆分model和view的实现方法
Aug 16 Python
python读取Kafka实例
Dec 23 Python
python操作gitlab API过程解析
Dec 27 Python
python中format函数如何使用
Jun 22 Python
Django实现基于类的分页功能
Oct 31 #Python
python Django框架实现web端分页呈现数据
Oct 31 #Python
python3常用的数据清洗方法(小结)
Oct 31 #Python
Django实现网页分页功能
Oct 31 #Python
8段用于数据清洗Python代码(小结)
Oct 31 #Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 #Python
python实现大量图片重命名
Mar 23 #Python
You might like
php模块memcache和memcached区别分析
2011/06/14 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
浅谈PDO的rowCount函数
2015/06/18 PHP
Laravel5.5 视图 - 创建视图和数据传递示例
2019/10/21 PHP
比较详细的关于javascript中void(0)的具体含义解释
2007/08/02 Javascript
jquery attr 设定src中含有&amp;(宏)符号问题的解决方法
2011/07/26 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
包含中国城市的javascript对象实例
2015/08/03 Javascript
使用Bootstrap框架制作查询页面的界面实例代码
2016/05/27 Javascript
如何使用Vuex+Vue.js构建单页应用
2016/10/27 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
Bootstrap入门教程一Hello Bootstrap初识
2017/03/02 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
jQuery动态添加.active 实现导航效果代码思路详解
2017/08/29 jQuery
nodejs结合Socket.IO实现的即时通讯功能详解
2018/01/12 NodeJs
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
vue 优化CDN加速的方法示例
2018/09/19 Javascript
微信小程序组件传值图示过程详解
2019/07/31 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
element-ui树形控件后台返回的数据+生成组织树的工具类
2020/03/05 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
实例Python处理XML文件的方法
2015/08/31 Python
Windows下为Python安装Matplotlib模块
2015/11/06 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
Django如何配置mysql数据库
2018/05/04 Python
matplotlib实现热成像图colorbar和极坐标图的方法
2018/12/13 Python
Python对列表的操作知识点详解
2019/08/20 Python
Python列表倒序输出及其效率详解
2020/03/04 Python
BAILEY 44官网:美国制造的女性服装
2019/07/01 全球购物
环境科学专业个人求职信
2013/09/26 职场文书
校园环保标语
2014/06/13 职场文书
校本教研活动总结
2014/07/01 职场文书
博士生专家推荐信
2014/09/26 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android