Django提供了翻页器。用Django的Paginator类实现
一、views模块导入Paginator类实现数据分页
ApiTest/apiviews.py
每行都加了注释,希望有助于理解。
from django.shortcuts import render
from ApiTest.models import ApiTest
from django.contrib.auth.decorators import login_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger, InvalidPage
@login_required
def api_test_manage(request):
username = request.session.get('user', '')
# 获取所有接口测试数据
apitest_list = ApiTest.objects.all().order_by('id')
# 生成Paginator对象对数据分页,每页显示10条数据
paginator = Paginator(apitest_list,10)
# 使用request.GET.get()函数获取url中的page参数的数值。默认第1页
page = request.GET.get('page', 1)
# 把获取的当前页码数转换成整数类型
current_page = int(page)
try:
# 获取查询页数的接口数据列表,page()函数会判断page实参是否是有效数字。page()函数源码附在文章的最后
apitest_list = paginator.page(page)
except PageNotAnInteger:
apitest_list = paginator.page(1)
except (EmptyPage, InvalidPage):
# paginator.num_pages
apitest_list = paginator.page(paginator.num_pages)
return render(request, "apitest_manage.html", {
'user': username, 'apitests': apitest_list})
二、将views的数据渲染到前端模板上
在对应的html文件中加入此段代码即可。
<div class="container">
<ul class="pagination" id="pager">
{# 上一页链接 #}
{% if apitests.has_previous %}
<li class="previous"><a href="/apitest_manage/?page={
{ apitests.previous_page_number }}">上一页</a></li>
{% else %}
<li class="previous disabled"><a href=