Django 分页
Django分页的常用方法
-
django 提供了一个Paginator的方法
from django.core.paginator import Paginator
-
实例化对象
paginator = Paginator(datalist,per_page) # 里面传两个参数 数据和每页显示的记录数
-
获取数据的分页范围
page_range = paginator.page_range # 获取数据的分页范围 range(1,x) 从第一页到第x-1页
-
获取每页的数据
page_list = paginator.page(num) # 传入页码 获取当前页的数据
-
获取总页数
total_page = paginator.num_pages
-
指定显示的页数
# 当前页码 current_num = int(request.GET.get("page", 1)) # 显示方式 # 一般网页展示11页,左5页,右5页,加上当前页,共11页 # 11 就是可显示的页数 # 5 就是中位数 => 总页数//2 if paginator.num_pages > 11: if current_num - 5 < 1: # 如果前5页小于1时 pageRange = range(1, 11) # 页码的列表:范围是初始状态 elif current_num + 5 > paginator.num_pages: # 如果后5页大于总页数时 # 页码的列表:范围是(当前页-5,总页数+1)。因为range顾头不顾尾,需要加1 pageRange = range(current_num - 5, paginator.num_pages + 1) else: # 页码的列表:后5页正常时,页码范围是(当前页-5,当前页+6)。注意不是+5,因为range顾头不顾尾! pageRange = range(current_num - 5, current_num + 6) else: pageRange = paginator.page_range # 页码的列表
-
封装方法
def get_page(self,pageobj,p,showPage=11): # 1.获取总页数 totalPage = pageobj.num_pages # 2.获取中位数 midPage = int(showPage/2) # 3.如果总页数大于可显示的页数 if totalPage > showPage: # 5. 判断当前页如果小于中位数 if p - midPage < 1: page = [i for i in range(1,showPage+1)] elif p + midPage > totalPage: # 6. 如果当前页+中位数大于总页数的话,那么只能是总页数-(中位数-1)到总页数+1 page = [i for i in range(totalPage-(showPage-1),totalPage+1)] else: # 7. 如果在区间的话,应该是当前页-中位数到当前页+(中位数+1) page = [i for i in range(p-midPage,p+midPage+1)] else: # 4. 当总页数小于可显示的页数的时候,全部显示 page = [i for i in pageobj.page_range] return page
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端