分页一(very low)


因为数据量过大,而又想直观便捷的查看数据,进而通过分页显示就可以完成这项工作

app中views.py

  1. LIST=[] #全局定义一个LIST
  2. for i in range(100): #数据量为100
  3. LIST.append(i) #使LIST里面包含0-99个自然数
  4.  
  5. def user_list(request):
  6. current_page=request.GET.get('p',1) #用户不存在默认看第一页
  7. current_page=int(current_page) #使char型变为int型
  8. start=(current_page-1)*10 #第一页
  9. end=current_page*10 #最后一页
  10. data=LIST[start:end] #使数据自动分页,每页10个数据
  11.  
  12. all_count=len(LIST) # 计算LIST的长度
  13. count,y=divmod(all_count,10) #divmod为算法 all_count/10,商为count,余数为y
  14. if y: #y不为0
  15. count+=1 #页数+1
  16. page_list=[]
  17. for i in range(1,count+1):
  18. if i==current_page: #i==页数
  19. temp='<a class="page active" href="/user_list/?p=%s">%s</a>'%(i,i) #点击页数时,通过css使其页数栏变色
  20. else:
  21. temp='<a class="page" href="/user_list/?p=%s">%s</a>'%(i,i)
  22. page_list.append(temp)
  23.  
  24. page_str=''.join(page_list) #以空的字符串将页数连接起来
  25. from django.utils.safestring import mark_safe
  26.  
  27. page_str=mark_safe(page_str) #使page_str为安全
  28.  
  29. return render(request,'user_list.html',{'li':data,'page_str':page_str})

html文件

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. .pagination .page{
  8. display: inline-block;
  9. padding: 5px;
  10. background-color: lavender;
  11. color: black;
  12. margin: 10px;
  13. }
  14. .pagination .page .active{
  15. background-color: red;
  16. }
  17. </style>
  18. </head>
  19. <body>
  20. <ul>
  21. {% for item in li %}
  22. {% include 'li.html' %}
  23. {% endfor %}
  24. </ul>
  25. <div class="pagination">
  26. {{ page_str }}
  27. </div>
  28.  
  29. </body>
  30. </html>

li.html

  1. <li>{{ item }}</li>

分页二(一般low)


  1. LIST = []
  2. for i in range(200):
  3. LIST.append(i)
  4.  
  5. def user_list(request):
  6. current_page = request.GET.get('p', 1) # 用户不存在默认看第一页
  7. current_page = int(current_page)
  8. dighter = 10
  9. start = (current_page - 1) * dighter
  10. end = current_page * dighter
  11. data = LIST[start:end]
  12.  
  13. all_count = len(LIST)
  14. count, y = divmod(all_count, 10)
  15. if y:
  16. count += 1
  17.  
  18. page_list = []
  19. page_num = 11
  20. if all_count < page_num: #如果总页数小于11页
  21. start_index = 1 #起始页为1
  22. end_index = all_count + 1 #终止页为总页数
  23. else:
  24. if current_page <= (page_num + 1) / 2: #如果当前页小于6页
  25. start_index = 1 #起始页为1
  26. end_index = 11 + 1 #终止页为11页
  27. else:
  28. start_index = current_page - (page_num - 1) / 2 #起始页为当前页-5
  29. end_index = current_page + (page_num - 1) / 2 + 1 #终止页为当前页+5
  30. if (current_page + (page_num - 1) / 2) > all_count: #如果当前页+5大于总页数
  31. start_index = all_count - page_num + 1 #起始页为总页数-11+1
  32. end_index = all_count + 1 #终止页为总页数
  33.  
  34. if current_page == 1: #如果当前页等于第一页
  35. prev = '<a class="page" href="#">上一页</a>' #则停止向前索引
  36. else:
  37. prev = '<a class="page active" href="/user_list/?p=%s">上一页</a>' % (current_page - 1) #否则可以按上一页向前进行索引
  38. page_list.append(prev)
  39.  
  40. for i in range(int(start_index), int(end_index)): #起始页-终止页数为整数
  41. if i == current_page: #如果i为当前页
  42. temp = '<a class="page active" href="/user_list/?p=%s" >%s</a>' % (i, i) # 将当前的页数序号加上颜色
  43. else:
  44. temp = '<a class="page" href="/user_list/?p=%s">%s</a>' % (i, i) # 没有选定的其他页数不加颜色
  45. page_list.append(temp)
  46.  
  47. if current_page == all_count: #如果当前页为总页数
  48. prev = '<a class="page" href="#">下一页</a>' #停止索引
  49. else:
  50. prev = '<a class="page active" href="/user_list/?p=%s">下一页</a>' % (current_page + 1) #否则可以按下一页向下进行索引
  51. page_list.append(prev)
  52.  
  53. jump = """
  54. <input type="text" /><input type="button" value="确定" onclick="jumpTo(this,'/user_list/?p=')" > #跳转至...页
  55. <script>
  56. function jumpTo(ths,base){ #base为/user_list/?p=
  57. var val=ths.previousSibling.value; #获取text框里的数值
  58. location.href=base + val ; #/user_list/?p= + text框里的内容进行跳转
  59. }
  60. </script>
  61.  
  62. """
  63. page_list.append(jump)
  64.  
  65. page_str = ''.join(page_list)
  66. from django.utils.safestring import mark_safe
  67.  
  68. page_str = mark_safe(page_str)
  69.  
  70. return render(request, 'user_list.html', {'li': data, 'page_str': page_str})

分页三(一般般)


  1. ###########将分页二变为面向对象编程#############
  2.  
  3. class Page:
  4.  
  5. def __init__(self,current_page,data_count,per_page_count=10,page_num=11):
  6. self.current_page=current_page
  7. self.data_count=data_count
  8. self.per_page_count=per_page_count
  9. self.page_num=page_num
  10.  
  11. def start(self):
  12. return (self.current_page-1)*self.per_page_count
  13.  
  14. def end(self):
  15. return self.current_page*self.per_page_count
  16.  
  17. @property
  18. def all_count(self):
  19. v = len(LIST)
  20. v, y = divmod(self.data_count, self.per_page_count)
  21. if y:
  22. v += 1
  23. return v
  24.  
  25. def page_str(self,base_url):
  26. page_list = []
  27. if self.all_count < self.page_num:
  28. start_index = 1
  29. end_index = self.all_count + 1
  30. else:
  31. if self.current_page <= (self.page_num + 1) / 2:
  32. start_index = 1
  33. end_index = 11 + 1
  34. else:
  35. start_index = self.current_page - (self.page_num - 1) / 2
  36. end_index = self.current_page + (self.page_num - 1) / 2 + 1
  37. if (self.current_page + (self.page_num - 1) / 2) > self.all_count:
  38. start_index = self.all_count - self.page_num + 1
  39. end_index = self.all_count + 1
  40.  
  41. if self.current_page == 1:
  42. prev = '<a class="page" href="#">上一页</a>'
  43. else:
  44. prev = '<a class="page active" href="%s?p=%s">上一页</a>' % (base_url,self.current_page - 1)
  45. page_list.append(prev)
  46.  
  47. for i in range(int(start_index), int(end_index)):
  48. if i == self.current_page:
  49. temp = '<a class="page active" href="%s?p=%s" >%s</a>' % (base_url,i, i)
  50. else:
  51. temp = '<a class="page" href="%s?p=%s">%s</a>' % (base_url,i, i)
  52. page_list.append(temp)
  53.  
  54. if self.current_page == self.all_count:
  55. prev = '<a class="page" href="#">下一页</a>'
  56. else:
  57. prev = '<a class="page active" href="%s?p=%s">下一页</a>' % (base_url,self.current_page + 1)
  58. page_list.append(prev)
  59.  
  60. jump = """
  61. <input type="text" /><input type="button" value="确定" onclick="jumpTo(this,'%s?p=')" >
  62. <script>
  63. function jumpTo(ths,base){
  64. var val=ths.previousSibling.value;
  65. location.href=base + val ;
  66. }
  67. </script>
  68.  
  69. """%(base_url)
  70. page_list.append(jump)
  71.  
  72. page_str = ''.join(page_list)
  73. from django.utils.safestring import mark_safe
  74.  
  75. page_str = mark_safe(page_str)
  76.  
  77. return page_str
  78.  
  79. LIST=[]
  80. for i in range(200):
  81. LIST.append(i)
  82.  
  83. def user_list(request):
  84. current_page=request.GET.get('p',1) #用户不存在默认看第一页
  85. current_page=int(current_page)
  86. page_obj=Page(current_page,len(LIST))
  87. data=LIST[page_obj.start():page_obj.end()]
  88. page_str=page_obj.page_str("/user_list/")
  89. 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. [转帖] InfiniBand主流厂商和产品分析

    https://blog.csdn.net/swingwang/article/details/72935461 InfiniBand主流厂商和产品分析 2017年06月08日 22:03:46 Ha ...

  2. 计算机网络-将C网192.168.25.0划分四个子网,计算每个子网的有效IP地址范围和对应网络掩码

    首先计算子网掩码: 将256/4=64,主机块大小64 2的6次方=64 根据主机数量计算出掩码的最后一个字节为11000000,用十进制表示掩码为255.255.255.192 由于IP地址结尾全为 ...

  3. 队列java实现

    队列是一种线性数据结构,是一种运算受限的线性表,只允许在队尾插入,在队头删除.运算规则是先进先出.恰好和栈相反.栈是先进后出.因为栈只在栈顶做删除和插入. 队列按照存储结构可以分为顺序队列和链式队列. ...

  4. BZOJ5212 ZJOI2018历史(LCT)

    首先相当于最大化access的轻重边交换次数. 考虑每个点作为战场(而不是每个点所代表的国家与其他国家交战)对答案的贡献,显然每次产生贡献都是该点的子树内(包括自身)此次access的点与上次acce ...

  5. Divisibility by 25 CodeForces - 988E(模拟)

    遇见模拟题 有两种做法 例如这题: 1.直接去算次数(统计哪个数在第几位,然后去运算) 2.模拟操作 贴一个别人的代码...https://blog.csdn.net/weixin_39453270/ ...

  6. 51nod 1376 最长上升子序列的数量 | DP | vector怒刷存在感!

    51nod 1376 最长上升子序列的数量 题解 我们设lis[i]为以位置i结尾的最长上升子序列长度,dp[i]为以位置i结尾的最长上升子序列数量. 显然,dp[i]要从前面的一些位置(设为位置j) ...

  7. 基本数据结构 —— 堆以及堆排序(C++实现)

    目录 什么是堆 堆的存储 堆的操作 结构体定义 判断是否为空 往堆中插入元素 从堆中删除元素 取出堆中最大的元素 堆排序 测试代码 例题 参考资料 什么是堆 堆(英语:heap)是计算机科学中一类特殊 ...

  8. BZOJ2530 [Poi2011]Party 【贪心】

    题目链接 BZOJ2530 题解 如果我们删去一对不连边的仍然存在的点的话,这对点肯定不同时在那个\(\frac{2}{3}n\)的团中,也就是说,每次删点至少删掉一个外点,至多删掉一个内点 那么我们 ...

  9. 主动分布式WEB资产扫描

      一. Redis的服务安装 系统环境:centos7x64   ip地址:192.168.1.11 1.设置静态IP地址 [root@localhost backlion]#vi /etc/sys ...

  10. Python OS模块操作文件和目录

    #-*-coding:utf-8-*- import os import shutil ###############OS模块############## #获得当前python脚本的工作目录 os. ...