Django-分页器

一、分页器介绍

python3 manage.py shell   #进入shell模式下
from django.core.paginator import Paginator  #导入包
from loginApp.models import Guest  #导入对象
guest_list = Guest.objects.all()  #获取到所有的guest对象
p=Paginator(guest_list,2)   #创建每页 2 条数据的分页器
p.count # 查看共多少条数据
p.page_range  #查看共分多少页(每页 2 条数据)循环结果为 1,2,3(共 3 页)
page1 = p.page(1)   # 获取第 1 页的数据
page1.object_list # 当前页的对象
page1 = p.page(1)
for p in page1: # 循环打印第 1 页嘉宾的 realname
    p
##########第三页############# 
>>> page3 = p.page(3) # 获取第 3 页的数据 
>>> page3.has_next() # 是否有下一页 False 
>>> page3.has_previous() # 是否有上一页 True 
>>> page3.has_other_pages() # 是否有其它页 True 
>>> page3.previous_page_number() # 前一页是第几页 

>>> page2.next_page_number() # 下一页是第几页
>>> page2.previous_page_number() # 上一页是第几页
page2.has_next() # 是否有下一页
page2.has_previous() # 是否有上一页
page2.end_index() # 本页的最后一条数据
page2.start_index() # 本页的第一条数据

二、分页器代码实现

1、修改views.py

@login_required()
def guest_manage(request):
    username = request.session.get('user', '')
    guest_list = Guest.objects.all()
    paginator = Paginator(guest_list,2)  #创建每页2条的分页器
    page = request.GET.get("page")  #从页面获取page数据
    '''
        获取第 page 页的数据。如果当前没有页数,抛 PageNotAnInteger 异常,返回第一页的数据。如果超出最 大页数的范围,抛 EmptyPage 异常,返回最后一页面的数据。
    '''
    try:
        contents = paginator.page(page)
    except PageNotAnInteger:
        contents = paginator.page(1)
    except EmptyPage:
        contents = paginator.page(paginator.num_pages)
    return render(request,'guest_manage.html',{'user':username,'guests':contents})

2、修改guest_manage.html

		<!-- 嘉宾列表 -->
		...........................
		<!-- 列表分页器 -->
		<div class="pagination">
			<span class="step-links">
				{% if guests.has_previous %}
				<a href="?page={{ guests.previous_page_number }}">
					previous
				</a>
				{% endif %}
				<span class="current">
					Page {{ guests.number }} of {{ guests.paginator.num_pages }}.
				</span>
				{% if guests.has_next %}
				<a href="?page={{ guests.next_page_number }}">
					next
				</a>
				{% endif %}
			</span>
		</div>
	</body>

3、重新访问http://127.0.0.1:8000/event_manage,点击嘉宾按钮可以看到:

本章代码:https://github.com/Oneperson1128/DjangoDemo.git   参考loginDemo6文件夹

你要相信 一切都会好起来
原文地址:https://www.cnblogs.com/feifei-cyj/p/14417701.html