from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
subclass_s = models.subclass_details.objects.all() #查询数据获取一个列表 paginator = Paginator(subclass_s,2) #使用Paginator对列表进行分页,我每页行数设置是2 page = request.GET.get('page') #网页使用列如127.0.0.1:8000?page=1 获取请求的页数 try: page = int(page) #我设置了用户在前端输入页码跳转,保证用户输入的是数字 except: page = 1 #输入非数字跳转第一页 if page == None : # 没有输入跳转第一页 page = 1 try: subclass_s = paginator.page(page) #这里是进行跳转的操作 except PageNotAnInteger: subclass_s = paginator.page(1) #如果输入是错误的跳转第一页 except EmptyPage: #如果输入的超出页码数跳转最后一页 subclass_s = paginator.page(paginator.num_pages) return render(request,'xproject/subclass_details.html',locals())
Paginator的一些操作方法
1 subclass_s = models.subclass.objects.all() 2 s = Paginator(subclass_s,10) 3 4 s.count #总对象,即列表里面的对象总数 5 6 s.num_pages #总页码数 7 8 p.page(num) #获取第num页 9 10 p.page(num).object_list #获取第num页里面的数据并以列表的形式显示 11 12 p.page(num).has_next() #判断num页当前是否有下一页 13 14 p.page(num).hhas_previous() #判断num页当前是否有上一页 15 16 p.page(num).has_other_pages() #判断num页是否有其他页 17 18 p.page(num).next_page_number() #获取下一页的页码 19 20 p.page(num).previous_page_number() #获取上一页的页码 21 22 p.page(num).start_index() #num页内从一开始数第一个对象 23 24 p.page(num).end_index() #num页内从一开始数最后一个对象