分页代码pagination.py如文件:

from django.utils.safestring import mark_safe
from django.http.request import QueryDict class Pagination:
"""
page: 当前的页码数
all_count: 总的数据量
per_num : 每页显示的数据量
max_show: 最多显示的页码数
""" def __init__(self, page, all_count, params=None, per_num=, max_show=):
try:
self.page = int(page)
if self.page <= :
self.page =
except Exception:
self.page =
# 查询条件
self.params = params
if not self.params:
self.params = QueryDict(mutable=True)
# 总的数据量
all_count = all_count
# 每页显示的数据量 # 总的页码数
total_num, more = divmod(all_count, per_num)
if more:
total_num +=
# 最大显示的页码数
half_show = max_show // if total_num <= max_show:
page_start =
page_end = total_num
else:
if self.page - half_show <= :
# 页码的起始值
page_start =
# 页码的终止值
page_end = max_show
elif self.page + half_show > total_num:
page_end = total_num
page_start = total_num - max_show + else:
# 页码的起始值
page_start = self.page - half_show
# 页码的终止值
page_end = self.page + half_show self.page_start = page_start
self.page_end = page_end
self.total_num = total_num
self.start = (self.page - ) * per_num
self.end = self.page * per_num @property
def page_html(self):
li_list = [] if self.page == :
li_list.append(
'<li class="disabled"><a aria-label="Previous"> <span aria-hidden="true">&laquo;</span></a></li>')
else:
self.params['page'] = self.page - # { query: ,page : }
li_list.append(
'<li><a href="?{}" aria-label="Previous"> <span aria-hidden="true">&laquo;</span></a></li>'.format(
self.params.urlencode())) # ?query=&page= for i in range(self.page_start, self.page_end + ):
self.params['page'] = i # { query: ,page : i}
if i == self.page:
li_list.append('<li class="active"><a href="?{}">{}</a></li>'.format(self.params.urlencode(), i))
else:
li_list.append('<li><a href="?{}">{}</a></li>'.format(self.params.urlencode(), i)) if self.page == self.total_num:
li_list.append(
'<li ><a aria-label="Next"> <span aria-hidden="true">&raquo;</span></a></li>')
else:
self.params['page'] = self.page +
li_list.append(
'<li ><a href="?{}" aria-label="Next"> <span aria-hidden="true">&raquo;</span></a></li>'.format(
self.params.urlencode())) return mark_safe(''.join(li_list))

使用需导入

<link rel="stylesheet" href="{% static 'plugins/bootstrap-3.3.7-dist/css/bootstrap.css' %}">

添加bootstrap的ul样式

  <nav aria-label="Page navigation">
<ul class="pagination">
<li>
<a href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span>
</a>
</li>
{{ page_html }} #使用分页代码
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span>
</a>
</li>
</ul>
</nav>

上面的还没有记住查询条件 ,因为使用的是post请求,改成get请求。

由POST获取搜索框内容改成由GET里获取。并且判断没有获取到那么就是返回首页。es限制只能查出10条数据,我们这里在query同级上加 ‘size’:大小   ,这样就可以显示多个了

实例化page,数据是列表变成以下切片,然后传页面

页面代码使用上面已经写了。这样点击其它页面就能使用前面拼接的内容了

python中分页使用的更多相关文章

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

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

  2. python中的property属性

    目录 1. 什么是property属性 2. 简单的实例 3. property属性的有两种方式 3.1 装饰器方式 3.2 类属性方式,创建值为property对象的类属性 4. property属 ...

  3. python web 分页组件

    闲来无事便写了一个易使用,易移植的Python Web分页组件.使用的技术栈是Python.Django.Bootstrap. 既然是易使用.易移植的组件,首先介绍一下其在django框架中的调用方式 ...

  4. [转]Python中的str与unicode处理方法

    早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...

  5. python中的Ellipsis

    ...在python中居然是个常量 print(...) # Ellipsis 看别人怎么装逼 https://www.keakon.net/2014/12/05/Python%E8%A3%85%E9 ...

  6. python中的默认参数

    https://eastlakeside.gitbooks.io/interpy-zh/content/Mutation/ 看下面的代码 def add_to(num, target=[]): tar ...

  7. Python中的类、对象、继承

    类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...

  8. python中的TypeError错误解决办法

    新手在学习python时候,会遇到很多的坑,下面来具体说说其中一个. 在使用python编写面向对象的程序时,新手可能遇到TypeError: this constructor takes no ar ...

  9. python中的迭代、生成器等等

    本人对编程语言实在是一窍不通啊...今天看了廖雪峰老师的关于迭代,迭代器,生成器,递归等等,word天,这都什么跟什么啊... 1.关于迭代 如果给定一个list或tuple,我们可以通过for循环来 ...

随机推荐

  1. html2canvas 将网页截图为图片,上传base64 到服务端

    await html2canvas(getById("winyh"), { height:500, allowTaint: true, useCORS: true, }).then ...

  2. js:如何在iframe重载前执行特定动作

    问题说明: 点击左侧菜单时,右侧页面中的iframe加载菜单内容,在iframe加载的页面A中使用了websocket.点击其它菜单时,无法主动关闭websocket, 可能会造成websocket链 ...

  3. jeecg 模糊查询

    1.前言 jeecg 考虑到默认模糊查询的话,会增加系统压力,导致查询慢,本来系统就挺那啥的... 2.方式一之实体赋值 实体重新赋值查询,用 * %% * 实现,我们知道 sql 中通常使用 % 去 ...

  4. CentOS7.5 使用 kubeadm 安装配置 Kubernetes1.12(四)

    在之前的文章,我们已经演示了yum 和二进制方式的安装方式,本文我们将用官方推荐的kubeadm来进行安装部署. kubeadm是 Kubernetes 官方提供的用于快速安装Kubernetes集群 ...

  5. WIFI-Direct(Wifi直连)、AirPlay、DLAN、Miracast功能介绍

    不知道大家对无线同屏技术有多少了解,当这种技术普及的时候,我想我们的工作与生活又会方便很多吧!下面是目前三种主流同屏技术的介绍: 目前这种将终端信号经由WiFi传输到电视.电视盒的技术有三种:DLNA ...

  6. 安装cnpm出现问题

    安装cnpm: 命令行中输入   npm install -g cnpm --registry=http://registry.npm.taobao.org 报:cnpm不是内部命令 解决方法:设置环 ...

  7. day22——从空间角度研究类、类与类之间的关系

    day22 从空间角度研究类 何处添加对象属性 在类的______init______可以添加 class Human: mind = "有思想的" def __init__(se ...

  8. 怎样使用U盘安装系统

    准备工作 一个8G及以上的U盘: 软碟通UltraISO,下载地址,非免费,但试用就够了: 系统镜像,推荐去MSDN下载: 安装过程 利用U盘制作启动盘,准备好上述的东西,然后开始制作启动盘: 注意: ...

  9. Go基础编程实践(五)—— 错误和日志

    自定义错误类型 Go中可以使用errors.New()创建错误信息,也可以通过创建自定义错误类型来满足需求.error是一个接口类型,所有实现该接口的类型都可以当作一个错误类型. // error类型 ...

  10. Docker之dockerfile制作jdk镜像

    目的: Dockerfile简介 Dockerfile制作jdk镜像 Dockerfile简介 了解dockerfile之前要先了解Docker基本概念和使用可参考:https://www.cnblo ...