23.-分页
一、分页的定义
分页是指在web页面上有大量数据今昔显示,为了阅读方便在每个页面中只显示部分数据
优点:
1.方面阅读
2.减少数据提取量,减轻服务器压力
Django提供了Paginator类可以方便的实现分页功能
Paginator类位于django.core.pagintor模块中
from django.core.paginator import Paginator
二、Paginotor对象
负责分页数据整体的管理
# 对象的构造方法 pagintor = Pagintor(object_list,per_page) object_list: 需要分类的数据的对象列表 per_page:每页数据个数 返回值:Paginator对象
#Paginator属性 count:需要分页数据的对象总数 num_pages:分页后的页面总数 page_range:从1开始的range对象,用于记录页码数 per_page:每页数据的个数
#Paginator方法 pagintor对象.page(number) 参数number为页码信息(从1开始) 返回当前number页对应的页面信息 如果提供的页码不存在,抛出InvalidPage异常
三、page对象
负责具体某一页的数据的管理
创建对象
# Paginator对象的page()方法返回page对象 page = paginator.page(页码) page对象属性 objcet_list:当前页上所有数据的对象列表 number:当前页的序号,从1开始 paginator:当前page对象相关的Paginator对象 page对象方法 has_next() #如果有下一页 返回True has_previous() #如果有上一页,返回True has_other_pages() #如果有上一页或下一页 返回True next_page_number() #返回下一页的页码,如果下一页不存在,抛出InvalidPage异常 previous_page_number() #返回上一页的页码,如果上一页不存在,抛出InvalidPage异常
Paginotor掌控全局,page掌控局部
四、具体示例:
视图
from django.core.paginator import Paginator def test_page(request): # 全部数据如下 all_data = ['a', 'b', 'c', 'd', 'e'] # 获取页码 page_num = request.GET.get('page', 1) # 初始化pagintor 要分页的数据 / 每页显示的数量 pagintor = Paginator(all_data, 2, ) # 初始化 具体页码的page对象 c_page = pagintor.page(int(page_num)) return render(request, 'test.html', locals())
模版
body> {# 循环页码 #} {% for p in c_page %} <p>{{ p }}</p> {% endfor %} {# 判断如果有上一页,显示跳转,否则显示置灰文本 #} {% if c_page.has_previous %} {# 拼接上一页页码参数 #} <a href="/test_page?page={{ c_page.previous_page_number }}">上一页</a> {% else %} 上一页 {% endif %} {# 循环页码#} {% for p_num in pagintor.page_range %} {# 如果页码与 当前序号一致#} {% if p_num == c_page.number %} {{ p_num }} {# 当前页码置灰显示 #} {% else %} <a href="/test_page?page={{ p_num }}">{{ p_num }}</a> {# 显示高亮序号跳转 #} {% endif %} {% endfor %} {# 判断如果有下一页,显示跳转,否则显示置灰文本 #} {% if c_page.has_next %} <a href="/test_page?page={{ c_page.next_page_number }}">下一页</a> {% else %} 下一页 {% endif %} </body>
风月都好看,人间也浪漫.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)