Django中html里的分页显示
分页一(very low)
因为数据量过大,而又想直观便捷的查看数据,进而通过分页显示就可以完成这项工作
app中views.py
- LIST=[] #全局定义一个LIST
- for i in range(100): #数据量为100
- LIST.append(i) #使LIST里面包含0-99个自然数
- def user_list(request):
- current_page=request.GET.get('p',1) #用户不存在默认看第一页
- current_page=int(current_page) #使char型变为int型
- start=(current_page-1)*10 #第一页
- end=current_page*10 #最后一页
- data=LIST[start:end] #使数据自动分页,每页10个数据
- all_count=len(LIST) # 计算LIST的长度
- count,y=divmod(all_count,10) #divmod为算法 all_count/10,商为count,余数为y
- if y: #y不为0
- count+=1 #页数+1
- page_list=[]
- for i in range(1,count+1):
- if i==current_page: #i==页数
- temp='<a class="page active" href="/user_list/?p=%s">%s</a>'%(i,i) #点击页数时,通过css使其页数栏变色
- else:
- temp='<a class="page" href="/user_list/?p=%s">%s</a>'%(i,i)
- page_list.append(temp)
- page_str=''.join(page_list) #以空的字符串将页数连接起来
- from django.utils.safestring import mark_safe
- page_str=mark_safe(page_str) #使page_str为安全
- return render(request,'user_list.html',{'li':data,'page_str':page_str})
html文件
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- <style>
- .pagination .page{
- display: inline-block;
- padding: 5px;
- background-color: lavender;
- color: black;
- margin: 10px;
- }
- .pagination .page .active{
- background-color: red;
- }
- </style>
- </head>
- <body>
- <ul>
- {% for item in li %}
- {% include 'li.html' %}
- {% endfor %}
- </ul>
- <div class="pagination">
- {{ page_str }}
- </div>
- </body>
- </html>
li.html
- <li>{{ item }}</li>
分页二(一般low)
- LIST = []
- for i in range(200):
- LIST.append(i)
- def user_list(request):
- current_page = request.GET.get('p', 1) # 用户不存在默认看第一页
- current_page = int(current_page)
- dighter = 10
- start = (current_page - 1) * dighter
- end = current_page * dighter
- data = LIST[start:end]
- all_count = len(LIST)
- count, y = divmod(all_count, 10)
- if y:
- count += 1
- page_list = []
- page_num = 11
- if all_count < page_num: #如果总页数小于11页
- start_index = 1 #起始页为1
- end_index = all_count + 1 #终止页为总页数
- else:
- if current_page <= (page_num + 1) / 2: #如果当前页小于6页
- start_index = 1 #起始页为1
- end_index = 11 + 1 #终止页为11页
- else:
- start_index = current_page - (page_num - 1) / 2 #起始页为当前页-5
- end_index = current_page + (page_num - 1) / 2 + 1 #终止页为当前页+5
- if (current_page + (page_num - 1) / 2) > all_count: #如果当前页+5大于总页数
- start_index = all_count - page_num + 1 #起始页为总页数-11+1
- end_index = all_count + 1 #终止页为总页数
- if current_page == 1: #如果当前页等于第一页
- prev = '<a class="page" href="#">上一页</a>' #则停止向前索引
- else:
- prev = '<a class="page active" href="/user_list/?p=%s">上一页</a>' % (current_page - 1) #否则可以按上一页向前进行索引
- page_list.append(prev)
- for i in range(int(start_index), int(end_index)): #起始页-终止页数为整数
- if i == current_page: #如果i为当前页
- temp = '<a class="page active" href="/user_list/?p=%s" >%s</a>' % (i, i) # 将当前的页数序号加上颜色
- else:
- temp = '<a class="page" href="/user_list/?p=%s">%s</a>' % (i, i) # 没有选定的其他页数不加颜色
- page_list.append(temp)
- if current_page == all_count: #如果当前页为总页数
- prev = '<a class="page" href="#">下一页</a>' #停止索引
- else:
- prev = '<a class="page active" href="/user_list/?p=%s">下一页</a>' % (current_page + 1) #否则可以按下一页向下进行索引
- page_list.append(prev)
- jump = """
- <input type="text" /><input type="button" value="确定" onclick="jumpTo(this,'/user_list/?p=')" > #跳转至...页
- <script>
- function jumpTo(ths,base){ #base为/user_list/?p=
- var val=ths.previousSibling.value; #获取text框里的数值
- location.href=base + val ; #/user_list/?p= + text框里的内容进行跳转
- }
- </script>
- """
- page_list.append(jump)
- page_str = ''.join(page_list)
- from django.utils.safestring import mark_safe
- page_str = mark_safe(page_str)
- return render(request, 'user_list.html', {'li': data, 'page_str': page_str})
分页三(一般般)
- ###########将分页二变为面向对象编程#############
- class Page:
- def __init__(self,current_page,data_count,per_page_count=10,page_num=11):
- self.current_page=current_page
- self.data_count=data_count
- self.per_page_count=per_page_count
- self.page_num=page_num
- def start(self):
- return (self.current_page-1)*self.per_page_count
- def end(self):
- return self.current_page*self.per_page_count
- @property
- def all_count(self):
- v = len(LIST)
- v, y = divmod(self.data_count, self.per_page_count)
- if y:
- v += 1
- return v
- def page_str(self,base_url):
- page_list = []
- if self.all_count < self.page_num:
- start_index = 1
- end_index = self.all_count + 1
- else:
- if self.current_page <= (self.page_num + 1) / 2:
- start_index = 1
- end_index = 11 + 1
- else:
- start_index = self.current_page - (self.page_num - 1) / 2
- end_index = self.current_page + (self.page_num - 1) / 2 + 1
- if (self.current_page + (self.page_num - 1) / 2) > self.all_count:
- start_index = self.all_count - self.page_num + 1
- end_index = self.all_count + 1
- if self.current_page == 1:
- prev = '<a class="page" href="#">上一页</a>'
- else:
- prev = '<a class="page active" href="%s?p=%s">上一页</a>' % (base_url,self.current_page - 1)
- page_list.append(prev)
- for i in range(int(start_index), int(end_index)):
- if i == self.current_page:
- temp = '<a class="page active" href="%s?p=%s" >%s</a>' % (base_url,i, i)
- else:
- temp = '<a class="page" href="%s?p=%s">%s</a>' % (base_url,i, i)
- page_list.append(temp)
- if self.current_page == self.all_count:
- prev = '<a class="page" href="#">下一页</a>'
- else:
- prev = '<a class="page active" href="%s?p=%s">下一页</a>' % (base_url,self.current_page + 1)
- page_list.append(prev)
- jump = """
- <input type="text" /><input type="button" value="确定" onclick="jumpTo(this,'%s?p=')" >
- <script>
- function jumpTo(ths,base){
- var val=ths.previousSibling.value;
- location.href=base + val ;
- }
- </script>
- """%(base_url)
- page_list.append(jump)
- page_str = ''.join(page_list)
- from django.utils.safestring import mark_safe
- page_str = mark_safe(page_str)
- return page_str
- LIST=[]
- for i in range(200):
- LIST.append(i)
- def user_list(request):
- current_page=request.GET.get('p',1) #用户不存在默认看第一页
- current_page=int(current_page)
- page_obj=Page(current_page,len(LIST))
- data=LIST[page_obj.start():page_obj.end()]
- page_str=page_obj.page_str("/user_list/")
- return render(request,'user_list.html',{'li':data,'page_str':page_str})
Django中html里的分页显示的更多相关文章
- Django中扩展Paginator实现分页
Reference:https://my.oschina.net/kelvinfang/blog/134342 Django中已经实现了很多功能,基本上只要我们需要的功能,都能够找到相应的包.要在Dj ...
- Django中的模板和分页
模板 在Templates中添加母版: - 母版...html 母版(master.html)中可变化的地方加入: {%block content%}{%endblock%} 在子版 (usermg. ...
- java中对list进行分页显示数据到页面
http://blog.csdn.net/Tang_Mr/article/details/76212184#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2 ...
- Django 中设置分页页码,只显示当前页以及左右两页
设置后的效果如下: Django 给我们提供了分页的功能:`Paginator`和`Page`类都是用来做分页的.他们在Django中的路径为:`from django.core.paginator ...
- Django中的分页,cookies与session
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- Django中的session和cookie及分页设置
cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...
- django中如何实现分页功能
1.在html页面中导入js文件和css文件 <link rel="stylesheet" href="../../../static/css/jquery.pag ...
- Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页
Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页 在FireMonkey iOS应用程序中的Tab Tab由FMX.TabControl.TTabControl定 ...
- django django中的HTML控件及参数传递方法 以及 HTML form 里的数据是怎么被包成http request 的?如何在浏览器里查看到这些数据?
https://www.jb51.net/article/136738.htm django中的HTML控件及参数传递方法 下面小编就为大家分享一篇django中的HTML控件及参数传递方法,具有很好 ...
随机推荐
- [转帖] InfiniBand主流厂商和产品分析
https://blog.csdn.net/swingwang/article/details/72935461 InfiniBand主流厂商和产品分析 2017年06月08日 22:03:46 Ha ...
- 计算机网络-将C网192.168.25.0划分四个子网,计算每个子网的有效IP地址范围和对应网络掩码
首先计算子网掩码: 将256/4=64,主机块大小64 2的6次方=64 根据主机数量计算出掩码的最后一个字节为11000000,用十进制表示掩码为255.255.255.192 由于IP地址结尾全为 ...
- 队列java实现
队列是一种线性数据结构,是一种运算受限的线性表,只允许在队尾插入,在队头删除.运算规则是先进先出.恰好和栈相反.栈是先进后出.因为栈只在栈顶做删除和插入. 队列按照存储结构可以分为顺序队列和链式队列. ...
- BZOJ5212 ZJOI2018历史(LCT)
首先相当于最大化access的轻重边交换次数. 考虑每个点作为战场(而不是每个点所代表的国家与其他国家交战)对答案的贡献,显然每次产生贡献都是该点的子树内(包括自身)此次access的点与上次acce ...
- Divisibility by 25 CodeForces - 988E(模拟)
遇见模拟题 有两种做法 例如这题: 1.直接去算次数(统计哪个数在第几位,然后去运算) 2.模拟操作 贴一个别人的代码...https://blog.csdn.net/weixin_39453270/ ...
- 51nod 1376 最长上升子序列的数量 | DP | vector怒刷存在感!
51nod 1376 最长上升子序列的数量 题解 我们设lis[i]为以位置i结尾的最长上升子序列长度,dp[i]为以位置i结尾的最长上升子序列数量. 显然,dp[i]要从前面的一些位置(设为位置j) ...
- 基本数据结构 —— 堆以及堆排序(C++实现)
目录 什么是堆 堆的存储 堆的操作 结构体定义 判断是否为空 往堆中插入元素 从堆中删除元素 取出堆中最大的元素 堆排序 测试代码 例题 参考资料 什么是堆 堆(英语:heap)是计算机科学中一类特殊 ...
- BZOJ2530 [Poi2011]Party 【贪心】
题目链接 BZOJ2530 题解 如果我们删去一对不连边的仍然存在的点的话,这对点肯定不同时在那个\(\frac{2}{3}n\)的团中,也就是说,每次删点至少删掉一个外点,至多删掉一个内点 那么我们 ...
- 主动分布式WEB资产扫描
一. Redis的服务安装 系统环境:centos7x64 ip地址:192.168.1.11 1.设置静态IP地址 [root@localhost backlion]#vi /etc/sys ...
- Python OS模块操作文件和目录
#-*-coding:utf-8-*- import os import shutil ###############OS模块############## #获得当前python脚本的工作目录 os. ...