首先在view函数里面引入所需要的分页函数
from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage def index(request): 1.获取所有数据 persons=Person.objects.all() 2.根据数据创建分页器对象 #参数1 查询出来所有数据 # 参数2 每一页显示的个数 #参数3 如果最后一页的数据个数小于3 将其合并到上一页中 pagenator=Paginator(persons,10,3) 3.取出当前展示的页码 #没有传递页码参数默认获取第一页 page_num=request.GET.get('page','1') try: 4,根据页码从分页器中取出对应页的数据 page=pagenator.page(page_num) except PageNotAnInteger as e: #如果获取的页码不是整数,默认返回第一页数据 page=pagenator.page(1) except EmptyPage as e: #当参数页码大于或小于页码范围值,会触发一个异常 #分为两种情况 #1.大于 if int(page_num)>pagenator.num_pages: page=pagenator.page(pagenator.num_pages) else: #2.小于 获取第一页数据 page=pagenator.page(1) num=int(page_num) #如果num是1 显示1—10 #如果num是2 显示2-11 #如果num是3 显示3-12 #如果num是4 显示4-13 #如果num是5 显示5-14 #如果num是6 显示6-15 #如果num是7 显示7-16 #如果num是8显示8-17 #如果num是9 显示9-18 #如果num是10显示10-19 # 如果num是11显示11-20 # 如果num是12 显示11-20 #如果num是15 显示11-20 #如果num<11 范围是num-num+9 #如果num>=11 范围是 #1. link_range=[] if num<11 or num+9<=pagenator.num_pages: link_range=range(num,num+10) else: link_range=range(pagenator.num_pages-9,pagenator.num_pages+1) return render(request,'index.html',{'page':page,'pagenator':pagenator,'link_range':link_range})