分页一(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里的分页显示的更多相关文章

  1. Django中扩展Paginator实现分页

    Reference:https://my.oschina.net/kelvinfang/blog/134342 Django中已经实现了很多功能,基本上只要我们需要的功能,都能够找到相应的包.要在Dj ...

  2. Django中的模板和分页

    模板 在Templates中添加母版: - 母版...html 母版(master.html)中可变化的地方加入: {%block content%}{%endblock%} 在子版 (usermg. ...

  3. java中对list进行分页显示数据到页面

    http://blog.csdn.net/Tang_Mr/article/details/76212184#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2 ...

  4. Django 中设置分页页码,只显示当前页以及左右两页

    设置后的效果如下: Django 给我们提供了分页的功能:`Paginator`和`Page`类都是用来做分页的.他们在Django中的路径为:`from django.core.paginator ...

  5. Django中的分页,cookies与session

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  6. Django中的session和cookie及分页设置

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

  7. django中如何实现分页功能

    1.在html页面中导入js文件和css文件 <link rel="stylesheet" href="../../../static/css/jquery.pag ...

  8. Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页

    Delphi for iOS开发指南(8):在iOS应用程序中使用Tab组件来显示分页 在FireMonkey iOS应用程序中的Tab Tab由FMX.TabControl.TTabControl定 ...

  9. django django中的HTML控件及参数传递方法 以及 HTML form 里的数据是怎么被包成http request 的?如何在浏览器里查看到这些数据?

    https://www.jb51.net/article/136738.htm django中的HTML控件及参数传递方法 下面小编就为大家分享一篇django中的HTML控件及参数传递方法,具有很好 ...

随机推荐

  1. SQL语句查询一个数据库中的所有表

    --读取库中的所有表名 select name from sysobjects where xtype='u' --读取指定表的所有列名 select name from syscolumns whe ...

  2. LAMP 环境下添加多个虚拟主机(网站)

    Ubuntu系统 #在/var/www目录下新建两个文件夹bbs和oa,执行完以上命令后,/var/www目录下有bbs.oa三个文件夹,名称与二级域名对应,分别存放三个系统的php文件,这样便于日后 ...

  3. js仿QQ拖拽删除

    原生js实现仿QQ拖拽删除交互,无需任何依赖. 项目演示请看这里, gitHub请移步这里. 由于源码很长,所以贴到最下面了. 效果截图如下: 核心思想呢,就是点击圆点的时候全屏覆盖个canvas,在 ...

  4. LDA-Latent Dirichlet Allocation 学习笔记

    以下内容主要基于<Latent Dirichlet Allocation>,JMLR-2003一文,另加入了一些自己的理解,刚开始了解,有不对的还请各位指正. LDA-Latent Dir ...

  5. Java参数引用传递之例外:null

    今天写链表的时候写了一个函数,实参是一个空链表,应该是按引用传参,但是在函数内修改了链表,外部的链表没有变化. 原来是null作为参数传递的时候,就不是引用传参了. 引自:http://blog.cs ...

  6. vyos 基础配置

    vyos 基础配置 http://www.lowefamily.com.au/2015/11/29/using-a-vyos-router-with-hyper-v/1/http://thomasvo ...

  7. Android Support Palette使用详解

    使用Palette API选择颜色 良好的视觉设计是app成功所必不可少的, 而色彩设计体系是设计的基础构成. Palette包是支持包, 能够从图片中解析出突出的颜色, 从而帮助你创建出视觉迷人的应 ...

  8. 《Linux内核设计与实现》第18章读书笔记

    第十八章 调试 一.调试开始前的准备 1.准备开始 bug 藏匿bug的版本 相关内核代码的知识 成功调试的关键在于能否将错误重现 2.内核中的bug 其产生原因无数,表象变化也多种多样.从隐藏在源代 ...

  9. 【数学】【P5150】 生日礼物

    Description 给定 \(n\),求 \[\sum_{i}~\sum_j~[lcm(i,j)~=~n]\] input 一行一个整数代表 \(n\) Output 一行一个整数代表答案 Hin ...

  10. ALC662 在Mac中的安装

    最近在装黑苹果,一切还算顺利(整了两周),就是ICH7的ALC662一直无法驱动成功.经过两天的爬文,终于成功了.以下是我的一点经验. 我装的是最新的10.9.2,显卡驱动是自带的(我的显卡为GT62 ...