Paginator
分页器的使用
>>> from django.core.paginator import Paginator>>> objects = ['john', 'paul', 'george', 'ringo']>>> p = Paginator(objects, 2) >>> p.count #数据总数4>>> p.num_pages #总页数2>>> type(p.page_range) # `` in Python 2. >>> p.page_range #页码的列表range(1, 3) # =========[1,2] >>> page1 = p.page(1) #第1页的page对象>>> page1 >>> page1.object_list #第1页的数据['john', 'paul'] >>> page2 = p.page(2)>>> page2.object_list #第2页的数据['george', 'ringo']>>> page2.has_next() #是否有下一页False>>> page2.has_previous() #是否有上一页True>>> page2.has_other_pages() #是否有其他页True>>> page2.next_page_number() #下一页的页码Traceback (most recent call last):...EmptyPage: That page contains no results>>> page2.previous_page_number() #上一页的页码1>>> page2.start_index() # 本页第一条记录的序数(从1开始)3>>> page2.end_index() # 本页最后录一条记录的序数(从1开始)4 >>> p.page(0) #错误的页,抛出异常Traceback (most recent call last):...EmptyPage: That page number is less than 1>>> p.page(3) #错误的页,抛出异常Traceback (most recent call last):...EmptyPage: That page contains no results
实现一个分页效果
templates:
{% load staticfiles %}Title 分页器
{ % for book in book_list %}
- { { book.title }} { { book.price }}
{ % endfor %}{ % if book_list.has_previous %}
- 上一页
{ % else %}- 上一页
{ % endif %} { % for num in paginator.page_range %} { % if num == currentPage %}- { { num }}
{ % else %}- { { num }}
{ % endif %} { % endfor %} { % if book_list.has_next %}- 下一页
{ % else %}- 下一页
{ % endif %}
views:
from django.shortcuts import render,HttpResponse# Create your views here.from django.core.paginator import Paginator, EmptyPage, PageNotAnIntegerfrom app01.models import *def index(request): ''' 批量导入数据: 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) page = request.GET.get('page',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",locals())