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文件夹
本文来自博客园,作者:Yi个人,转载请注明原文链接:https://www.cnblogs.com/feifei-cyj/p/14417701.html

浙公网安备 33010602011771号