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控件及参数传递方法,具有很好 ...
随机推荐
- SQL语句查询一个数据库中的所有表
--读取库中的所有表名 select name from sysobjects where xtype='u' --读取指定表的所有列名 select name from syscolumns whe ...
- LAMP 环境下添加多个虚拟主机(网站)
Ubuntu系统 #在/var/www目录下新建两个文件夹bbs和oa,执行完以上命令后,/var/www目录下有bbs.oa三个文件夹,名称与二级域名对应,分别存放三个系统的php文件,这样便于日后 ...
- js仿QQ拖拽删除
原生js实现仿QQ拖拽删除交互,无需任何依赖. 项目演示请看这里, gitHub请移步这里. 由于源码很长,所以贴到最下面了. 效果截图如下: 核心思想呢,就是点击圆点的时候全屏覆盖个canvas,在 ...
- LDA-Latent Dirichlet Allocation 学习笔记
以下内容主要基于<Latent Dirichlet Allocation>,JMLR-2003一文,另加入了一些自己的理解,刚开始了解,有不对的还请各位指正. LDA-Latent Dir ...
- Java参数引用传递之例外:null
今天写链表的时候写了一个函数,实参是一个空链表,应该是按引用传参,但是在函数内修改了链表,外部的链表没有变化. 原来是null作为参数传递的时候,就不是引用传参了. 引自:http://blog.cs ...
- vyos 基础配置
vyos 基础配置 http://www.lowefamily.com.au/2015/11/29/using-a-vyos-router-with-hyper-v/1/http://thomasvo ...
- Android Support Palette使用详解
使用Palette API选择颜色 良好的视觉设计是app成功所必不可少的, 而色彩设计体系是设计的基础构成. Palette包是支持包, 能够从图片中解析出突出的颜色, 从而帮助你创建出视觉迷人的应 ...
- 《Linux内核设计与实现》第18章读书笔记
第十八章 调试 一.调试开始前的准备 1.准备开始 bug 藏匿bug的版本 相关内核代码的知识 成功调试的关键在于能否将错误重现 2.内核中的bug 其产生原因无数,表象变化也多种多样.从隐藏在源代 ...
- 【数学】【P5150】 生日礼物
Description 给定 \(n\),求 \[\sum_{i}~\sum_j~[lcm(i,j)~=~n]\] input 一行一个整数代表 \(n\) Output 一行一个整数代表答案 Hin ...
- ALC662 在Mac中的安装
最近在装黑苹果,一切还算顺利(整了两周),就是ICH7的ALC662一直无法驱动成功.经过两天的爬文,终于成功了.以下是我的一点经验. 我装的是最新的10.9.2,显卡驱动是自带的(我的显卡为GT62 ...