11 Djongo组件——分页器

柔光的暖阳◎ 2021-12-22 09:19 336阅读 0赞

Django的分页器(paginator)

view

  1. from django.shortcuts import render,HttpResponse
  2. # Create your views here.
  3. from app01.models import *
  4. from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
  5. def index(request):
  6. '''
  7. 批量导入数据:
  8. Booklist=[]
  9. for i in range(100):
  10. Booklist.append(Book(title="book"+str(i),price=30+i*i))
  11. Book.objects.bulk_create(Booklist)
  12. '''
  13. '''
  14. 分页器的使用:
  15. book_list=Book.objects.all()
  16. paginator = Paginator(book_list, 10)
  17. print("count:",paginator.count) #数据总数
  18. print("num_pages",paginator.num_pages) #总页数
  19. print("page_range",paginator.page_range) #页码的列表
  20. page1=paginator.page(1) #第1页的page对象
  21. for i in page1: #遍历第1页的所有数据对象
  22. print(i)
  23. print(page1.object_list) #第1页的所有数据
  24. page2=paginator.page(2)
  25. print(page2.has_next()) #是否有下一页
  26. print(page2.next_page_number()) #下一页的页码
  27. print(page2.has_previous()) #是否有上一页
  28. print(page2.previous_page_number()) #上一页的页码
  29. # 抛错
  30. #page=paginator.page(12) # error:EmptyPage
  31. #page=paginator.page("z") # error:PageNotAnInteger
  32. '''
  33. book_list=Book.objects.all()
  34. paginator = Paginator(book_list, 10)
  35. page = request.GET.get('page',1)
  36. currentPage=int(page)
  37. try:
  38. print(page)
  39. book_list = paginator.page(page)
  40. except PageNotAnInteger:
  41. book_list = paginator.page(1)
  42. except EmptyPage:
  43. book_list = paginator.page(paginator.num_pages)
  44. 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. <div class="container">
  11. <h4>分页器</h4>
  12. <ul>
  13. {% for book in book_list %}
  14. <li>{
  15. { book.title }} -----{
  16. { book.price }}</li>
  17. {% endfor %}
  18. </ul>
  19. <ul class="pagination" id="pager">
  20. {% if book_list.has_previous %}
  21. <li class="previous"><a href="/index/?page={
  22. { book_list.previous_page_number }}">上一页</a></li>
  23. {% else %}
  24. <li class="previous disabled"><a href="#">上一页</a></li>
  25. {% endif %}
  26. {% for num in paginator.page_range %}
  27. {% if num == currentPage %}
  28. <li class="item active"><a href="/index/?page={
  29. { num }}">{
  30. { num }}</a></li>
  31. {% else %}
  32. <li class="item"><a href="/index/?page={
  33. { num }}">{
  34. { num }}</a></li>
  35. {% endif %}
  36. {% endfor %}
  37. {% if book_list.has_next %}
  38. <li class="next"><a href="/index/?page={
  39. { book_list.next_page_number }}">下一页</a></li>
  40. {% else %}
  41. <li class="next disabled"><a href="#">下一页</a></li>
  42. {% endif %}
  43. </ul>
  44. </div>
  45. </body>
  46. </html>

扩展

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

转载于:https://www.cnblogs.com/bai-max/p/9244491.html

发表评论

表情:
评论列表 (有 0 条评论,336人围观)

还没有评论,来说两句吧...

相关阅读

    相关 JSP通用,带查询条件

    —— 如果一段代码重复出现的次数多了,我们就需要把它独立出来! 分页功能的代码就是这样的,在需要展示列表的页面,我们基本都需要加上分页功能,如果某天boss想要修改分页功能的

    相关 django

    分页 Paginator 分页器 Paginator用于分页,但Paginator并不具体管理具体的页的处理,而是使用Page对象管理具体页面 创建分页器对