分页一(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. [微软官网] SQLSERVER 执行页面还原

    执行页面还原 https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2008-r2/ms175168(v=sql.105) ...

  2. vue & keep-alive & activated

    vue & keep-alive & activated vue 生命周期 钩子函数 缓存 http://www.cnblogs.com/nekoooo/p/6442077.html ...

  3. 根据端口号,利用DOS命令杀死进程

    比如利用DOS命令找出占用8080端口的程序的PID 然后用DOS命令杀死该进程 kill

  4. redis压力测试工具-----redis-benchmark

    redis做压测可以用自带的redis-benchmark工具,使用简单 压测命令:redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 压测需要一段 ...

  5. STM32标准外设库、 HAL库、LL库

    工作以来一直使用ST的STM32系列芯片,ST为开发者提供了非常方便的开发库.到目前为止,有标准外设库(STD库).HAL库.LL库 三种.前两者都是常用的库,后面的LL库是ST最近才添加,目前支持的 ...

  6. 【转】Word 2010 取消拼写/语法检查,隐藏红线/绿线

    转自:http://blog.chinaunix.net/uid-8203698-id-3040631.html 设置方法如下,在Word菜单栏-->文件-->选项-->校对,其中“ ...

  7. std::string 赋值为nullptr引起程序崩溃

    一个错误排查两天,std::string赋初值时最好为"", 如果赋初值为nullptr,因为std::string不能和nullptr作比较,所以后面用的时候会引起崩溃. 佩服我 ...

  8. [洛谷P4705]玩游戏

    题目大意:对于每个$k\in[1,t]$,求:$$\dfrac{\sum\limits_{i=1}^n\sum\limits_{j=1}^m(a_i+b_j)^k}{nm}$$$n,m,t\leqsl ...

  9. 洛谷 P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 解题报告

    P2915 [USACO08NOV]奶牛混合起来Mixed Up Cows 题意: 给定一个长\(N\)的序列,求满足任意两个相邻元素之间的绝对值之差不超过\(K\)的这个序列的排列有多少个? 范围: ...

  10. java多线程 -- 原子量 变量 CAS

    多线程原子性问题的产生和解决 原子变量:在 java.util.concurrent.atomic 包下提供了一些原子变量. 1. volatile 保证内存可见性,可以查看atomic中变量是使用v ...