分页器

Django内置分页器(paginator)

分页器函数为paginator,里面有几个重要的参数需要我们了解

    paginator = Paginator(book_list, 10)      #第二个参数表示每页显示的数量
    paginator.count)                          #数据总数
    paginator.num_pages                       #总页数
    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
    

 

在views中:

from django.shortcuts import render,HttpResponse

from app01.models import *
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

def index(request):

    '''
     这里我们伪造数据库的数据,假设从数据库获得了100条数据 
    批量导入数据:

    Booklist=[]
    for i in range(100):
        Booklist.append(Book(title="book"+str(i),price=30+i*i))
    Book.objects.bulk_create(Booklist)
    '''

    '''
分页器的使用:

    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
    '''

    book_list=Book.objects.all()
    paginator = Paginator(book_list, 10)
    page = request.GET.get('page',1) #前端传的页码数,默认值为1
    currentPage=int(page)

    try:
        print(page)
        book_list = paginator.page(page)
    except PageNotAnInteger:
        book_list = paginator.page(1) #页码数部位数字时报错,跳转到第一页
    except EmptyPage:
        book_list = paginator.page(paginator.num_pages) #超过最大时显示最后一页

    return render(request,"index.html",{"book_list":book_list,"paginator":paginator,"currentPage":currentPage})
后端数据处理

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-05-27
  • 2021-07-27
  • 2022-02-11
  • 2021-10-15
  • 2021-06-11
  • 2022-12-23
猜你喜欢
  • 2021-08-15
  • 2022-12-23
  • 2021-08-24
  • 2021-07-27
相关资源
相似解决方案