分页器
导入包
from django.core.paginator import Paginator
导入对应对象
from testcase_app.models import TestCase
获取对象所有数据
cases=TestCase.objects.all()
使用Paginator函数进行数据分页
p=Paginator(cases,2)
获取全部数据 p.count 获取页数p.page_range
首先实现接口实现,让数据按接口传出的数据展现
def testcase_manage(request):
case_list=TestCase.objects.all()
p=Paginator(case_list,5) #构造分页器,每5条数据为一页
page=request.GET.get('page') #从前端获取当前页数
try:
contacts=p.page(page) #获取当前页数据
except PageNotAnInteger: #不是整数
contacts = p.page(1)
except EmptyPage: #超出页数
contacts= p.page(p.num_pages)
return render(request,"case_list.html",{"type":"manage","cases":contacts})
然后去前端增加对应样式:
<!--分页器-->
<div>
<nav aria-label="Page navigation">
<ul class="pagination">
<li>
{% if cases.has_previous %} <!--判断当前页面,上一页有没数据-->
<a href="?page={{ cases.previous_page_number }}" aria-label="Previous"> <!--获取上一页数据-->
<span aria-hidden="true">«</span>
</a>
{% endif %}
</li>
<li><a href="">{{ cases.number }}</a></li>
{% if cases.has_next %} <!--判断下一页是否有数据-->
<li>
<a href="?page={{ cases.next_page_number }}" aria-label="Next"> <!--获取上一页数据-->
<span aria-hidden="true">»</span>
</a>
</li>
{% endif %}
<li> <a href="#">共:{{ cases.paginator.num_pages }}页</a></li>
{# <li> <a href="#">2</a></li>#}
</ul>
</nav>
</div>
</div>
展现出的实际效果:
Pageinator函数方法: