python中分页使用
分页代码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">«</span></a></li>')
else:
self.params['page'] = self.page - # { query: ,page : }
li_list.append(
'<li><a href="?{}" aria-label="Previous"> <span aria-hidden="true">«</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">»</span></a></li>')
else:
self.params['page'] = self.page +
li_list.append(
'<li ><a href="?{}" aria-label="Next"> <span aria-hidden="true">»</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">«</span>
</a>
</li>
{{ page_html }} #使用分页代码
<li>
<a href="#" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
</ul>
</nav>

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

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

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

python中分页使用的更多相关文章
- python/Djangof分页与自定义分页
python/Djangof分页与自定义分页 Django分页 ##============================================分页==================== ...
- python中的property属性
目录 1. 什么是property属性 2. 简单的实例 3. property属性的有两种方式 3.1 装饰器方式 3.2 类属性方式,创建值为property对象的类属性 4. property属 ...
- python web 分页组件
闲来无事便写了一个易使用,易移植的Python Web分页组件.使用的技术栈是Python.Django.Bootstrap. 既然是易使用.易移植的组件,首先介绍一下其在django框架中的调用方式 ...
- [转]Python中的str与unicode处理方法
早上被python的编码搞得抓耳挠腮,在搜资料的时候感觉这篇博文很不错,所以收藏在此. python2.x中处理中文,是一件头疼的事情.网上写这方面的文章,测次不齐,而且都会有点错误,所以在这里打算自 ...
- python中的Ellipsis
...在python中居然是个常量 print(...) # Ellipsis 看别人怎么装逼 https://www.keakon.net/2014/12/05/Python%E8%A3%85%E9 ...
- python中的默认参数
https://eastlakeside.gitbooks.io/interpy-zh/content/Mutation/ 看下面的代码 def add_to(num, target=[]): tar ...
- Python中的类、对象、继承
类 Python中,类的命名使用帕斯卡命名方式,即首字母大写. Python中定义类的方式如下: class 类名([父类名[,父类名[,...]]]): pass 省略父类名表示该类直接继承自obj ...
- python中的TypeError错误解决办法
新手在学习python时候,会遇到很多的坑,下面来具体说说其中一个. 在使用python编写面向对象的程序时,新手可能遇到TypeError: this constructor takes no ar ...
- python中的迭代、生成器等等
本人对编程语言实在是一窍不通啊...今天看了廖雪峰老师的关于迭代,迭代器,生成器,递归等等,word天,这都什么跟什么啊... 1.关于迭代 如果给定一个list或tuple,我们可以通过for循环来 ...
随机推荐
- rocketmqy压测消费端解决源码中不能正常消费的问题
因为近期在做rocketmq的性能压测,然后看到一些文章,提到用rocketmq中的自带的benchamark工具进行压测,因为我们公司是自己在做了一个二次封装,做了一层认证,所以工具还需要在改造,所 ...
- EasyNVR网页摄像机无插件H5、谷歌Chrome直播方案-Onvif(一)使用Onvif协议进行设备发现以及指定设备信息探测
背景分析 众所周知,EasyNVR不拘泥.不受限于摄像机的品牌厂商及其配套平台,只要是网络监控摄像机IPC.硬盘录像机NVR.且设备支持标准的RTSP/Onvif协议,都可以接入实时视频流进入Easy ...
- iperf—流量测试
iperf是另外一款用于流量测试的软件,主要运行于Windows系统和安卓系统的手机/PAD(IOS系统下载需要收费). 一个工作在Server模式,另外一个工作在Client模式,输入Server的 ...
- IntelliJ IDEA(2018.3.5) 设置编码为utf-8编码
位置一: File->Settings->Editor->File Encodings 位置二: File->Other Settings->Default Sett ...
- python数据分析2之numpy
源代码 # -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. " ...
- 第N个丑数
#include <bits/stdc++.h> using namespace std; #define ll long long /* 把只包含质因子2.3和5的数称作丑数(Ugly ...
- [转帖]从0开始的高并发(一)--- Zookeeper的基础概念
从0开始的高并发(一)--- Zookeeper的基础概念 https://juejin.im/post/5d0bd358e51d45105e0212db 前言 前面几篇以spring作为主题也是有些 ...
- git第一次上传push失败解决
第一次上传有可能会遇到push失败的情况,那是因为跟SVN一样,github上有一个README.md 文件没有下载下来 .我们得先 git pull --rebase origin master ...
- CF241E Flights 差分约束
传送门 差分约束永远是Itst最烂的图论知识点没有之一qwq 先用dfs把在\(1\)到\(N\)的路径上的所有点都拿出来,其他的点和边状态任意都不会影响答案. 然后考虑设\(dis_i\)表示从\( ...
- [NOI2019]弹跳(KD-Tree/四分树/线段树套平衡树 优化建图+Dijkstra)
本题可以用的方法很多,除去以下三种我所知道的就还有至少三种. 方法一:类似线段树优化建图,将一个平面等分成四份(若只有一行或一列则等分成两份),然后跑Dijkstra即可.建树是$O(n\log n) ...