python学习:Django的分页组件(8)
Django分页组件
Django有自己的分页功能模块,我们可以使用Django自带的分页类实现分页。
使用paginator,实现分页。
示例:
新建page.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>分页</title>
</head>
<body>
<h1>分页数据</h1>
<table border="1px solid black">
<tr>
<th>数据</th>
</tr>
{% for i in pages.object_list %}
<tr>
<td>{{i}}</td>
</tr>
{% endfor %}
</table>
{% if pages.has_previous %}
<p><a href="/url_dispatch/page?current_page={{pages.previous_page_number}}">上一页</a></p>
{% else %}
<p><a href="/url_dispatch/page?current_page=1">上一页</a></p>
{% endif %}
{% if pages.has_next %}
<p><a href="/url_dispatch/page?current_page={{pages.next_page_number}}">下一页</a></p>
{% else %}
<p><a href="/url_dispatch/page?current_page={{pages.paginator.num_pages}}">下一页</a></p>
{% endif %}
</body>
</html>
修改urls.py,增加分页页面路径
path("page/",views.page)
修改views.py,增加对应视图函数
#导入使用的包
from django.core.paginator import Paginator,PageNotAnInteger,EmptyPage,Page
#分页数据
data_list = []
for i in range(1,200):
data_list.append("data" + str(i));
def page(request):
#获取当前页
current_page = request.GET.get("current_page");
print("当前页:",current_page)
#paginator对象,传入数据和每页显示条数
#per_page:每页显示条数
#count:总数
#num_pages:总页数
#page_range:总页数范围
#page:Page对象
paginator = Paginator(data_list,10);
print("每页条数:",paginator.per_page,"总数:",paginator.count,"总页数:",paginator.num_pages,"总页数范围:",paginator.page_range);
try:
#获取一个页面对象
#has_next:是否有下一页
#next_page_numer:下一页页码
#has_previous:是否有上一页
#previous_page_number:上一页页码
#object_list:分页后数据列表
#number:当前页
#paginator:paginator对象
pages = paginator.page(current_page)
except PageNotAnInteger:
return HttpResponse("error")
except EmptyPage:
return HttpResponse("error")
return render(request,"page.html",{"pages":pages});
本文来自博客园,作者:渔歌晚唱,转载请注明原文链接:https://www.cnblogs.com/tangToms/articles/14159003.html

浙公网安备 33010602011771号