view

  1. from django.shortcuts import render,HttpResponse
  2.  
  3. # Create your views here.
  4. from app01.models import *
  5. from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
  6.  
  7. def index(request):
  8.  
  9. '''
  10. 批量导入数据:
  11.  
  12. Booklist=[]
  13. for i in range(100):
  14. Booklist.append(Book(title="book"+str(i),price=30+i*i))
  15. Book.objects.bulk_create(Booklist)
  16. '''
  17.  
  18. '''
  19. 分页器的使用:
  20.  
  21. book_list=Book.objects.all()
  22.  
  23. paginator = Paginator(book_list, 10)
  24.  
  25. print("count:",paginator.count) #数据总数
  26. print("num_pages",paginator.num_pages) #总页数
  27. print("page_range",paginator.page_range) #页码的列表
  28.  
  29. page1=paginator.page(1) #第1页的page对象
  30. for i in page1: #遍历第1页的所有数据对象
  31. print(i)
  32.  
  33. print(page1.object_list) #第1页的所有数据
  34.  
  35. page2=paginator.page(2)
  36.  
  37. print(page2.has_next()) #是否有下一页
  38. print(page2.next_page_number()) #下一页的页码
  39. print(page2.has_previous()) #是否有上一页
  40. print(page2.previous_page_number()) #上一页的页码
  41.  
  42. # 抛错
  43. #page=paginator.page(12) # error:EmptyPage
  44.  
  45. #page=paginator.page("z") # error:PageNotAnInteger
  46.  
  47. '''
  48.  
  49. book_list=Book.objects.all()
  50.  
  51. paginator = Paginator(book_list, 10)
  52. page = request.GET.get('page',1)
  53. currentPage=int(page)
  54.  
  55. try:
  56. print(page)
  57. book_list = paginator.page(page)
  58. except PageNotAnInteger:
  59. book_list = paginator.page(1)
  60. except EmptyPage:
  61. book_list = paginator.page(paginator.num_pages)
  62.  
  63. return render(request,"index.html",{"book_list":book_list,"paginator":paginator,"currentPage":currentPage})

index.html:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>Title</title>
  6. <link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css"
  7. integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
  8. </head>
  9. <body>
  10.  
  11. <div class="container">
  12.  
  13. <h4>分页器</h4>
  14. <ul>
  15.  
  16. {% for book in book_list %}
  17. <li>{{ book.title }} -----{{ book.price }}</li>
  18. {% endfor %}
  19.  
  20. </ul>
  21.  
  22. <ul class="pagination" id="pager">
  23.  
  24. {% if book_list.has_previous %}
  25. <li class="previous"><a href="/index/?page={{ book_list.previous_page_number }}">上一页</a></li>
  26. {% else %}
  27. <li class="previous disabled"><a href="#">上一页</a></li>
  28. {% endif %}
  29.  
  30. {% for num in paginator.page_range %}
  31.  
  32. {% if num == currentPage %}
  33. <li class="item active"><a href="/index/?page={{ num }}">{{ num }}</a></li>
  34. {% else %}
  35. <li class="item"><a href="/index/?page={{ num }}">{{ num }}</a></li>
  36.  
  37. {% endif %}
  38. {% endfor %}
  39.  
  40. {% if book_list.has_next %}
  41. <li class="next"><a href="/index/?page={{ book_list.next_page_number }}">下一页</a></li>
  42. {% else %}
  43. <li class="next disabled"><a href="#">下一页</a></li>
  44. {% endif %}
  45.  
  46. </ul>
  47. </div>
  48.  
  49. </body>
  50. </html>

扩展:

  1. def index(request):
  2.  
  3. book_list=Book.objects.all()
  4.  
  5. paginator = Paginator(book_list, 15)
  6. page = request.GET.get('page',1)
  7. currentPage=int(page)
  8.  
  9. # 如果页数十分多时,换另外一种显示方式
  10. if paginator.num_pages>11:
  11.  
  12. if currentPage-5<1:
  13. pageRange=range(1,11)
  14. elif currentPage+5>paginator.num_pages:
  15. pageRange=range(currentPage-5,paginator.num_pages+1)
  16.  
  17. else:
  18. pageRange=range(currentPage-5,currentPage+5)
  19.  
  20. else:
  21. pageRange=paginator.page_range
  22.  
  23. try:
  24. print(page)
  25. book_list = paginator.page(page)
  26. except PageNotAnInteger:
  27. book_list = paginator.page(1)
  28. except EmptyPage:
  29. book_list = paginator.page(paginator.num_pages)
  30.  
  31. return render(request,"index.html",locals())

 

django之分页器的更多相关文章

  1. 使用Django实现分页器功能

    要使用Django实现分页器,必须从Django中导入Paginator模块 from django.core.paginator import Paginator 假如现在有150条记录要显示,每页 ...

  2. 【django之分页器】

    一.什么是分页功能 二.Django的分页器(paginator) 语法: paginator = Paginator(book_list, 8) #8条一页print("count:&qu ...

  3. django自定义分页器

    一 django 的分页器 1 批量创建数据 批量导入数据: Booklist=[] for i in range(100): Booklist.append(Book(title="boo ...

  4. Django组件-分页器

    Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...

  5. Django框架----分页器(paginator)

    Django的分页器(paginator) view.py from django.shortcuts import render,HttpResponse # Create your views h ...

  6. django的分页器

    Django中分页器的使用 django分页器模块 #分页器 from django.core.paginator import Paginator,EmptyPage,PageNotAnIntege ...

  7. Django组件(一) Django之分页器

    Django的分页器(paginator)简介 在页面显示分页数据,需要用到Django分页器组件 from django.core.paginator import Paginator Pagina ...

  8. Django 组件-分页器

    Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views here ...

  9. Django - 文件上传、Django组件 - 分页器(paginator)

    一.文件上传准备知识 - Content-Type 1.请求头 - Content-Type Content-Type指的是请求体的编码类型,常见的类型共有3种: 1)application/x-ww ...

  10. Django 进阶(分页器&中间件)

    分页 Django的分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views h ...

随机推荐

  1. Unity内存存储揭秘

    笔者介绍:姜雪伟,IT公司技术合伙人,IT高级讲师,CSDN社区专家,特邀编辑,畅销书作者,已出版书籍:<手把手教你架构3D游戏引擎>电子工业出版社和<Unity3D实战核心技术详解 ...

  2. Vim技能修炼教程(12) - Vim的脚本语言支持

    Vim的脚本语言支持 本节开始,我们正式接触vimscript这门古老的脚本语言. 首先要说明,vim支持的扩展语言很多,比如python, python3, ruby, lua,tcl等常见脚本语言 ...

  3. IOS开发 Missing submodule 'XXXX' 警告

    项目结构 如下图 target -> ssssssss 是个Framework&library 出现的警告 Missing submodule 'XXXXXX' 只要在 ssssssss ...

  4. 在FP与DDD的道路上越走越远

    托辞 最近一口气读了若干本FP方面的书,可人是越来越懒了,要整理个什么东西却也没有那个精力,所以简单扔几张图,算是给自己一个提醒吧. 在此期间,我用并不纯熟的Scala和Groovy练了一把手.虽然只 ...

  5. boost::function和boost:bind取代虚函数

    以boost::function和boost:bind取代虚函数 这是一篇比较情绪化的blog,中心思想是"继承就像一条贼船,上去就下不来了",而借助boost::function ...

  6. BZOJ1816 Cqoi2010 扑克牌【二分答案】

    BZOJ1816 Cqoi2010 扑克牌 Description 你有n种牌,第i种牌的数目为ci.另外有一种特殊的牌:joker,它的数目是m.你可以用每种牌各一张来组成一套牌,也可以用一张jok ...

  7. sublime自动格式化代码插件HTML-CSS-JS Prettify安装

    sublime自动格式化代码插件HTML-CSS-JS Prettify安装 问题: 用 Sublime Text 格式化代码(安装 HTML-CSS-JS Prettify 插件)时,格式化时却会提 ...

  8. lapis http verb 处理

    1. 同一个url 包含不同的请求(respond_to  进行解决) // 路由格式 match ,通过respond_to 进行实际的http verb 处理 local lapis = requ ...

  9. oracle表空间维护常用命令

    ---查看表空间的名字及文件所在位置: select tablespace_name, file_id, file_name,round(bytes/(1024*1024),0) total_spac ...

  10. bzoj3258秘密任务

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3258 因为只走最短路,所以先正反两遍djkstra,新建边. 这里的边是单向边.所以要用原来 ...