book_list_all=Book.objects.all() paginator=Paginator(book_list_all,10) book_list=paginator.page(page_num) #第几页数的数据对象 paginator.page(1).object_list #第一页图书的数据对象 paginator.num_pages #最后一页 paginator.page_range #分页的范围 book_list.next_page_number #书的下一页 book_list.previous_page_number #书的上一页
Template:
{% load staticfiles %} <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <link rel="stylesheet" href={% static 'dist/css/bootstrap.css' %}> <script src={% static 'dist/js/jquery-3.2.1.js' %}></script> <style> .active { background-color: #2aabd2; color:white; } </style> </head> <body> <div class="container"> <ul> {% for book in book_list %} <li>{{ book.title }} {{ book.price }}</li> {% endfor %} </ul> </div> <ul class="pagination"> {% if book_list.has_previous %} <li class="previous"><a href="/?page={{ book_list.previous_page_number }}">上一页</a></li> {% else %} <li class="previous disabled"><a href="#">上一页</a></li> {% endif %} {% for num in paginator.page_range %} <li><a href="/?page={{ num }}">{{ num }}</a></li> {% endfor %} {% if book_list.has_next %} <li class="next"><a href="{{ book_list.next_page_number }}">下一页</a></li> {% else %} <li class="next disabled"><a href="#">下一页</a></li> {% endif %} </ul> </body> </html>
View视图:
from django.shortcuts import render,HttpResponse from app01.models import * from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage # Create your views here. def createbook(request): # book_list=[] # for i in range(100): # book_list.append(Book(title='book%s'%i,price=10+i*i)) # Book.objects.bulk_create(book_list) book_list_all=Book.objects.all() paginator=Paginator(book_list_all,10) print("第一页数据",paginator.page(1).object_list) page_num=request.GET.get("page") try: book_list=paginator.page(page_num) except PageNotAnInteger: book_list=paginator.page(1) except EmptyPage: book_list=paginator.page(paginator.num_pages) return render(request,"index.html",locals())