24、Django-网站分页功能-Pagintor类
-Django提供了Paginator类可以方便的实现分页功能 -Painator 类 位于 django.core.pagintor 模块中
负责分页数据整体的管理 对象的构造方法: paginator = Paginator(object_list, per_page) - 参数: - object_list :需要分页的数据的对象列表-数据的个数 - per_page:每页数据的个数 - 返回值: - Paginator的对象 Paginator的属性: - count:需要分页数据的对象总数 - num_page:分页后的页面总数 - page_range:从1开始的range对象、用于记录当前的页码 - per_page 每页数据的个数 Pagintor方法: paginator对象.page(number) - 参数:number为页码信息(从1开始) - 返回当前number 页对应的页面信息 - 如果提供的页码不存在、抛出InvalidPage异常 page对象 定义: - 负责具体某一页的数据管理 - 创建对象 - Paginator对象的page()方法返回Page对象 - page = pageinator.page(页码) Page对象属性: - object_list:当前页面上所有数据对象的列表 - number:当前页面的序号、从1开始 - paginator:当前page对象相关的Pageinator对象 Page对象方法: - has_next(): 如果有下一页返回True - has_previous():如果有上一页返回True - has_other_pages():如果有上一页或下一页返回True - next_page_number():返回下一页的页码、如果下一页不存在、抛出InvalidPage异常 - previous_page_number():返回上一页的页码、如果上一页不存在、抛出InvalidPage异常
案例
views.py --------------------------------------------------------------- #分页功能 def test_page(request): # 获取页码 page_num = request.GET.get('page', 1) all_data = ['a', 'b', 'c', 'd', 'e'] # 创建分页对象 5个数据一页 paginator = Paginator(all_data, 2) #初始化 具体页码page对象 c_page = paginator.page(int(page_num)) return render(request, 'test_page.html', locals()) ----------------------------------------------------------------------- test_page.html --------------------------------------------------------------------- <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>分页</title> </head> <body> {% for p in c_page %} <p> {{ p }} </p> {% endfor %} {% if c_page.haas_previous %} <a href="/p_page?page={{ c_page.previous_page_number }}">上一页</a> {% else %} 上一页 {% endif %} {% for p_num in paginator.page_range %} {% if p_num == c_page.number %} {{ p_num }} {% else %} <a href="/p_page?page={{ p_num }}">{{ p_num }}</a> {% endif %} {% endfor %} {% if c_page.has_next %} <a href="/p_page?page={{ c_page.next_page_number }}">下一页</a> {% else %} 下一页 {% endif %} </body> </html> --------------------------------------------------------------------------- urls.py --------------------------------------------------------------------- from django.contrib import admin from django.urls import path from midware import views urlpatterns = [ path('p_page/', views.test_page), ] ---------------------------------------------------------------
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/18202777
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
标签:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步