django分页类---Paginator

官方文档

from django.core.paginator import Paginator, EmptyPage

        # 创建分页器:每页N条记录
        # # 列表页每页商品数据量
        # GOODS_LIST_LIMIT = 5
        paginator = Paginator(skus, constants.GOODS_LIST_LIMIT)

        # 获取对应页码数据
        try:
            page_skus = paginator.page(page_num)
        except EmptyPage:

            # 如果page_num不正确,默认给用户404
            return http.HttpResponseNotFound('empty page')

        # 获取列表页总页数
        total_page = paginator.num_pages







        分页器:
            有时候数据库的数据太多的话所有的数据都展示在同一个页面上,不方便浏览,也不利于管理:
            此时就出来了一个叫做分页器的概念:

            导入模块:from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
            先查询一下所有的书:book_list = Book.object.all()
            paginator = Paginator(book_list,10)      #每页显示10行数据
            paginator.count     ------------->总的数据有多少行
            paginator.num_pages    ---------->得到总的页数
            paginator.page_range   -----------页码的列表
             
            page1 = paginator.page(1)         -----获取到第一页的page对象
            page1 可以遍历,,得到的结果就是这个页面上的10条数据
            page1.object_list()          -------得到第一页的所有数据
            ---------------------------------------------------------------------------------
            page2 = paginator.page(2)          ---------拿到第二页
            page2.has_next()                  -------------判断是否有下一页
            page2.next_page_number()          ---------------下一页的页面
            page2.has_previous()               ---------判断是否有上一页
            page2.previous_page_number()        --------------上一页的页码
            ps:page不到数据的时候或者page的数据是错误的话会抛错
             
            前端处理数据:
                上一页       中间页            下一页
                判断booklist有没有上一页
                for循环中间页
                判断booklist有没有下一页

原文地址:https://www.cnblogs.com/oklizz/p/11222486.html