django分页

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
  • views.py下
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>
原文地址:https://www.cnblogs.com/kmnskd/p/10008569.html