from django.core.paginator import Paginator objects = ['john', 'paul', 'george', 'ringo', 'lucy', 'meiry', 'checy', 'wind', 'flow', 'rain'] p = Paginator(objects, 3) # 3条数据为一页,实例化分页对象 print (p.count) # 10 对象总共10个元素 print p.num_pages # 4 对象可分4页 print p.page_range # xrange(1, 5) 对象页的可迭代范围 page1 = p.page(1) # 取对象的第一分页对象 print page1.object_list # 第一分页对象的元素列表['john', 'paul', 'george'] print page1.number # 第一分页对象的当前页值 1 page2 = p.page(2) # 取对象的第二分页对象 print page2.object_list # 第二分页对象的元素列表 ['ringo', 'lucy', 'meiry'] print page2.number # 第二分页对象的当前页码值 2 print page1.has_previous() # 第一分页对象是否有前一页 False print page1.has_other_pages() # 第一分页对象是否有其它页 True print page2.has_previous() # 第二分页对象是否有前一页 True print page2.has_next() # 第二分页对象是否有下一页 True print page2.next_page_number() # 第二分页对象下一页码的值 3 print page2.previous_page_number() # 第二分页对象的上一页码值 1 print page2.start_index() # 第二分页对象的元素开始索引 4 print page2.end_index() # 第2分页对象的元素结束索引 6
from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger
def index(request): all_data = Person.objects.all() pagin = Paginator(all_data,3)#3代表3条数据为一页 page = request.GET.get('page') try: current_page = paginator.page(page) except PageNotAnInteger:#不是整数默认首页 current_page = paginator.page(1) except EmptyPage:#为空的时候默认是尾页 current_page = paginator.page(paginator.num_pages) all_data = current_page.object_list#获取当前页面的所有元素对象 returnrender(request,'index.html',{'all_data':all_data,'current_page':current_page})
-
HTML页面内容
p = Paginator(data,num)#实例化 p.count #对象共有多少个元素 p.num_pages #对象共分为多少页 p.page_range #页数迭代范围 current_page = p.page(page) #取对象的当前页 current_apge.number current_page.has_previous current_page.has_next current_page.previous_page_number current_page.next_page_number current_page.paginator.page_range
- 模板页面例子
<!DOCTYPE html> <html> <head> <title>分页练习</title> </head> <body> {{ contact_list }} {% if current_page.has_previous %} <a href="?={{ current_page.previous_page_number }}">上一页</a> {% endif %} {% for pg in current_page.paginator.page_range %} {% if pg == current_page.number %} <li class="active"><a href="?page={{ pg }}">{{ pg }}</a></li> {% else %} <li class='active'><a href="?page={{ pg }}">{{ pg }}</a></li> {% endif %} {% endfor%} {% if current_page.has_next %} <a href="?page={{ current_page.next_page_number }}">下一页</a> {% endif %} </body> </html>