zoukankan      html  css  js  c++  java
  • Django之内置分页器(paginator)

    django分页:

    from django.shortcutsimportrender

    from django.core.paginator import Paginator,EmptyPage, PageNotAnInteger

    from app01 import models

    #分页对象和当前页面数据对象的方法均可在模板中以属性(不加括号)的方式调用

    book_obj = models.Book.objects.all()#获取当前书籍所有信息

    paginator = Paginator(book_obj,8)#实例化分页对象,每页显示8条数据

    print(paginator.count)#总数据条数

    print(paginator.num_pages)#总页数

    print(paginator.page_range)#页数范围

    current_page_num=int(request.GET.get('page',1))#通过a标签的GET方式请求,默认显示第一页

    book_objs=paginator.page(current_page_num)#获取当前页面的数据对象,用于响应前端请求进行渲染显示

    if book_objs.has_previous():#当前页面是否有前一页

        print(book_objs.previous_page_number())#当前页面的前一页页码

    if book_objs.has_next():#当前页面是否有后一页

        print(book_objs.next_page_number())#当前页面的后一页页码

     

     

    try:

        print(page)

        book_objs = paginator.page(page)

    except PageNotAnInteger:

        book_objs = paginator.page(1)

    except EmptyPage:

        book_objs = paginator.page(paginator.num_pages)

     

    #设置页面操作的页码显示个数(需要在前端进行是当前页面数据对象的方法的使用)

    page_range=paginator.page_range#确定页面范围,以便进行模板渲染显示页码操作

    if paginator.num_pages>5:#页码只显示5页,总页数小于5页时,直接全部显示

        if current_page_num<3:

            page_range=range(1,6)

        elif current_page_num+2>paginator.num_pages:

            page_range=range(current_page_num-5,paginator.num_pages+1)

        else:

            page_range=range(current_page_num-2,current_page_num+3)

     

    return render(request, 'show.html', {'book_objs': book_objs,'page_range':page_range,'current_page_num':current_page_num})

  • 相关阅读:
    ASPxGridView之ASPxGridViewExporter
    Asp.net中,从弹出窗体取选择值
    ASPxGridView中常用操作
    asp.net Webconfig
    白皮书 CPU卡基本知识
    Linux 中的计时 转自IBM china
    网络无缝融合技术(转)
    UMA相关的网站
    几本不错的书
    手机基带芯片供应商严阵以待,备战3G市场
  • 原文地址:https://www.cnblogs.com/open-yang/p/11223260.html
Copyright © 2011-2022 走看看