class Pages:
def __init__(self, current_page, data_count, per_page_count=10, pager_num=7):#pager_num 这是页码
self.current_page = current_page
self.data_count = data_count
self.per_page_count = per_page_count
self.pager_num = pager_num
pass @property
def start(self):
return (self.current_page-1) * self.per_page_count @property
def end(self):
return self.current_page * self.per_page_count @property
def all_count(self):
v, s = divmod(self.data_count, self.per_page_count)
if s > 0:
v += 1
return v def page_str(self, base_url):
pg = []
if self.all_count < self.pager_num:
start_index = 1
ent_index = self.all_count
else:
if self.current_page < (self.pager_num + 1) / 2: # 最前面的数,当小于6时会出现的一种情况
start_index = 1
ent_index = self.pager_num
elif self.current_page + 5 > self.all_count: # 最后面的数,当加上5大于总页数时会出现的一种情况
start_index = self.all_count - self.pager_num + 1
ent_index = self.all_count
else:
start_index = self.current_page - ((self.pager_num - 1) / 2)
ent_index = self.current_page + ((self.pager_num - 1) / 2) pre_page = "<a href='%s?p=%s' class='page'>上一页</a>" % \
(base_url, self.current_page - 1 if self.current_page > 1 else 1) for a in range(int(start_index), int(ent_index)+1):
if a == self.current_page:
temp = "<a href='%s?p=%s' class='page active'>%s</a>" % (base_url, a, a)
pg.append(temp)
else:
temp = "<a href='%s?p=%s' class='page'>%s</a>" % (base_url, a, a)
pg.append(temp) next_page = "<a href='%s?p=%s' class='page'>下一页</a>" % \
(base_url, self.current_page + 1 if self.current_page < self.all_count else self.all_count) jump = """
<input id="jump" type="text"><button onclick="jump(this)">跳转</button>
<script>
function jump(node){
location.href= '%s?p='+ $("#jump").val()
}
</script>
""" % base_url
page_str = pre_page+"".join(pg)+next_page+jump
return page_str

使用例子:

def show_vedio(request):
current_page = request.GET.get("p", 1)
current_page = int(current_page)
page_obj = Pages(current_page, len(LIST))
lists = LIST[page_obj.start:page_obj.end] return render(request, "blogs/internet/show_video.html", {"list": lists, "page": page_obj.page_str("/blogs/video/")})

前端:

{{ "分页 "|defined_filter:"您会做 了吗!" }}
<ul>
{% for i in list %}
<li>{{ i }}</li>
{% endfor %} </ul> {{ page|safe }}

  

python实现分页插件的更多相关文章

  1. Jquery前端分页插件pagination同步加载和异步加载

    上一篇文章介绍了Jquery前端分页插件pagination的基本使用方法和使用案例,大致原理就是一次性加载所有的数据再分页.https://www.jianshu.com/p/a1b8b1db025 ...

  2. Jquery前端分页插件pagination使用

    插件描述:JqueryPagination是一个轻量级的jquery分页插件.只需几个简单的配置就可以生成分页控件.并且支持ajax获取数据,自定义请求参数,提供多种方法,事件和回调函数,功能全面的分 ...

  3. Flask学习之旅--分页功能:分别使用 flask--pagination 和分页插件 layPage

    一.前言 现在开发一个网站,分页是一个很常见的功能了,尤其是当数据达到一定量的时候,如果都显示在页面上,会造成页面过长而影响用户体验,除此之外,还可能出现加载过慢等问题.因此,分页就很有必要了. 分页 ...

  4. MVC如何使用开源分页插件shenniu.pager.js

    最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...

  5. 分页插件--根据Bootstrap Paginator改写的js插件

    刚刚出来实习,之前实习的公司有一个分页插件,和后端的数据字典约定好了的,基本上是看不到内部是怎么实现的,新公司是做WPF的,好像对于ASP.NET的东西不多,导师扔了一个小系统给我和另一个同事,指了两 ...

  6. [原创]jquery+css3打造一款ajax分页插件

    最近公司的项目将好多分页改成了ajax的前台分页以前写的分页插件就不好用了,遂重写一个 支持IE6+,但没有动画效果如果没有硬需求,个人认为没必要多写js让动画在这些浏览器中实现css3的动画本来就是 ...

  7. 一个强大的jquery分页插件

    点击这里查看效果 这个分页插件使用方便,引用keleyidivpager.js和keleyidivpager.css文件,然后在htm(或者php,aspx,jsp等)页面中对分页总数,参数名,前缀后 ...

  8. 【SSM 5】Mybatis分页插件的使用

    一.添加maven依赖项 <span style="font-family:KaiTi_GB2312;font-size:18px;"><dependency&g ...

  9. Mybatis分页插件

    mybatis配置 <!-- mybatis分页插件 --> <bean id="pagehelper" class="com.github.pageh ...

随机推荐

  1. jQuery Mobile Api

        jQuery Mobile提供了使用Javascript与框架(html5)通信以及进行内容管理的API.下面介绍具体事件. 文档事件     mobileinit事件会在jQuery Mob ...

  2. MethodImplOptions.Synchronized的一点讨论

    Review代码发现有一个方法加了[MethodImpl(MethodImplOptions.Synchronized)] 属性,这个属性的目的,从名字上就可以看出,是要对所有线程进行同步执行. 对方 ...

  3. Linux 服务器部署 PgAdmin 4 Server

    PostgreSQL 使用率越来越高,但是好用的图形化软件,诸如 Navicat.DataGrip.HeidiSQL 都是客户端软件,对于访问控制来说,比起 MySQL 的 phpMyAdmin 更加 ...

  4. 剑指offer六之求旋转数组的最小数字

    一.题目 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转. 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素. 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个 ...

  5. python for dblp.xml

    由于最近处理数据时涉及到dblp.xml,刚开始下载时dblp.xml只有300多M,但解压之后就有1.9G,没有什么东西能够打开,所以必须要用工具来处理,在python中sax包能够一边解析一边处理 ...

  6. Eclipse \ MyEclipse \Scala IDEA for Eclipse里如何将控制台console输出的过程记录全程保存到指定的文本文件(图文详解)

    不多说,直接上干货! 问题详情 运行Java程序的时候,控制台输出过多,或者同时运行多个Java程序,输出结果一闪而过的时候,可以考虑将将控制台输出,改为输出到文本文件.无须修改Java代码,引入流这 ...

  7. iis7 bug解决

    只需重新注册下AspNet就可以了,具体步骤如下 1 打开运行,输入cmd进入到命令提示符窗口. 2 进入到C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727 ...

  8. Python学习--12 异常处理、调试

    异常捕获 语法格式: try: pass except xxx as e: pass except xxx as e: pass ... else: pass finally: pass except ...

  9. 面试题----gcc的编译流程

    gcc编译流程 一.    编译与处理指令: gcc -E hello.c -o a.c 如果不使用-o指定输出的文件,会默认输出到终端.所以建议使用同时使用-o选项. 还要注意:编译时会保留#pra ...

  10. Spring Aop 注解方式参数传递

    v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VM ...