分页器

分页器:    
  -干啥的?数据量大的话,可以分页获取,查看
  基本写法:
    后端:
      -总数据拿出来
      -生成分页器Paginator对象(对象里有属性和方法)
      -生成当前页的对象,current_page=paginator.page(当前页码)
      -取出前台传过来的页码,current_page_num = int(request.GET.get('page'))
      -需要有异常捕获
            -捕获到,把当前页码设置成第一页
      前端:
         -for循环总页列表
         -点某一页,跳到指定页码,<li><a href="/index/?page={{ foo }}">{{ foo }}</a></li>
-上一页,下一页的处理:需要有判断,判断是否有上一页,下一页
    -终极版:
        判断总页码数是否大于11,不大于11,走else:把总页码数,赋给page_range(前端循环页码列表,循环的就是page_range)
        if paginator.num_pages >11:
            当前页码数-5大于1的时候,page_range应该是,page_range就是1到11页?
           if current_page_num-5<1:
             page_range=range(1,12)
           elif current_page_num+5>paginator.num_pages:
               当前页码数+5大于总页码数,总页码-10,到总页码+1之间
              page_range=range(paginator.num_pages-10,paginator.num_pages+1)
      else:
              其他情况,左5,右6推算,也就是:range(current_page_num - 5, current_page_num + 6)
            page_range = range(current_page_num - 5, current_page_num + 6)
        else:
           小于11,有多少页,就显示多少页
           page_range=paginator.page_range
批量插入输入: -models.Book.objects.bulk_create(ll)
from django.core.paginator import Paginator, EmptyPage
Paginator对象:    paginator = Paginator(user_list, 10)
# per_page: 每页显示条目数量
# count:    数据总个数
# num_pages:总页数
# page_range:总页数的索引范围,如: (1,10),(1,200)
# page:     page对象    
page对象:page=paginator.page(1)
# has_next              是否有下一页
# next_page_number      下一页页码
# has_previous          是否有上一页
# previous_page_number  上一页页码
# object_list           分页之后的数据列表
# number                当前页
# paginator             paginator对象
分页器的使用
    book_list=Book.objects.all()

    paginator = Paginator(book_list, 10)

    print("count:",paginator.count)           #数据总数
    print("num_pages",paginator.num_pages)    #总页数
    print("page_range",paginator.page_range)  #页码的列表



    page1=paginator.page(1) #第1页的page对象
    for i in page1:         #遍历第1页的所有数据对象
        print(i)

    print(page1.object_list) #第1页的所有数据


    page2=paginator.page(2)

    print(page2.has_next())            #是否有下一页
    print(page2.next_page_number())    #下一页的页码
    print(page2.has_previous())        #是否有上一页
    print(page2.previous_page_number()) #上一页的页码



    # 抛错
    #page=paginator.page(12)   # error:EmptyPage

    #page=paginator.page("z")   # error:PageNotAnInteger





原文地址:https://www.cnblogs.com/zhouhao123/p/9990686.html