当前位置: 首页 > news >正文

Django 4.x 智能分页get_elided_page_range

Django智能分页

分页效果

  • 第1页的效果
    在这里插入图片描述
  • 第10页的效果
    在这里插入图片描述
  • 带输入框的效果

主要函数

# 参数解释
# number: 当前页码,默认:1
# on_each_side:当前页码前后显示几页,默认:3
# on_ends:首尾固定显示几页,默认:2
Paginator.get_elided_page_range(number, on_each_side=3, on_ends=2)

代码部分

  • 接口查询
# 获取列表信息
def events(request):event_list = Event.objects.all().order_by("-level", "-begin")# 分页部分的代码page_number = request.GET.get('page', 1)paginator = Paginator(event_list, 15)page_obj = paginator.get_page(page_number)page_range = paginator.get_elided_page_range(number=page_number, on_each_side=3, on_ends=2)return render(request, "events.html", {"page_obj": page_obj, "page_range": page_range})
  • 前端展示
...
{#分页代码,业务代码请自行补充即可#}
{% if page_obj.has_other_pages %}<nav><ul class="pagination justify-content-center">{% if page_obj.has_previous %}<li class="page-item"><a class="page-link" href="?page={{ page_obj.previous_page_number }}">上一页</a></li>{% else %}<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>{% endif %}{% for item in page_range %}{% if item == page_obj.number %}<li class="page-item active"><a class="page-link" href="?page={{ item }}">{{ item }}</a></li>{% elif item == '...' %}<li class="page-item"><a class="page-link" href="#">{{ item }}</a></li>{% else %}<li class="page-item"><a class="page-link" href="?page={{ item }}">{{ item }}</a></li>{% endif %}{% endfor %}{% if page_obj.has_next %}<li class="page-item"><a class="page-link" href="?page={{ page_obj.next_page_number }}">下一页</a></li>{% else %}<li class="page-item disabled"><a class="page-link" href="#">下一页</a></li>{% endif %}</ul></nav>
{% endif %}

带输入框的效果部分代码

  • 接口查询时添加了总页数
def events(request):event_list = Event.objects.all().order_by("-level", "-begin")# 分页部分的代码page_number = request.GET.get('page', 1)paginator = Paginator(event_list, 15)page_obj = paginator.get_page(page_number)num_pages = paginator.num_pages  # 获取总共有多少页page_range = paginator.get_elided_page_range(number=page_number, on_each_side=3, on_ends=2)return render(request, "events.html", {"page_obj": page_obj, "page_range": page_range, "num_pages ":num_pages })
  • 前端部分添加了输入框
{% if page_obj.has_other_pages %}<nav><ul class="pagination justify-content-center">{% if page_obj.has_previous %}<li class="page-item"><a class="page-link" href="?page={{ page_obj.previous_page_number }}">上一页</a></li>{% else %}<li class="page-item disabled"><a class="page-link" href="#">上一页</a></li>{% endif %}{% for item in page_range %}{% if item == page_obj.number %}<li class="page-item active"><a class="page-link" href="?page={{ item }}">{{ item }}</a></li>{% elif item == '...' %}<li class="page-item"><a class="page-link" href="#">{{ item }}</a></li>{% else %}<li class="page-item"><a class="page-link" href="?page={{ item }}">{{ item }}</a></li>{% endif %}{% endfor %}{% if page_obj.has_next %}<li class="page-item"><a class="page-link" href="?page={{ page_obj.next_page_number }}">下一页</a></li>{% else %}<li class="page-item disabled"><a class="page-link" href="#">下一页</a></li>{% endif %}# 对input输入进行了限制[1, num_pages],防止越界输入# <li class="page-item">&nbsp;共{{ num_pages }}页<label for="p_num">&nbsp;到第</label><input type="text" oninput="if(value>{{ num_pages }})value={{ num_pages }};if(value<0)value=1" id="p_num">&nbsp;</li>#这里引入了一个button点击事件#<li class="page-item"><button class="page-link" id="submit">确定</button></li></ul></nav>
{% endif %}
  • 点击事件处理
 // 就是一个跳转,本想在这里处理输入页码检查的,觉得麻烦就改成input上的输入限制了。$("#submit").click(function () {let page_number = $("#p_num").val();window.location.href=`?page=${page_number}`  });
http://www.lryc.cn/news/348948.html

相关文章:

  • java-spring 09 下.populateBean (方法成员变量的注入@Autowird,@Resource)
  • 赛氪网携手众机构助力第七届京津冀生态修复实践论坛圆满落幕
  • Naive RAG 、Advanced RAG 和 Modular RAG 简介
  • Python高级编程-DJango2
  • bash脚本 报错:/bin/bash^M:解释器错误: 没有那个文件或目录
  • win10专业版远程桌面连接不上,win10专业版远程桌面连接不上常见原因与解决方法
  • 前端 日期 new Date 少0 转换成 yyyy-MM-dd js vue
  • Linux中的磁盘分析工具ncdu
  • Angular入门
  • Java进阶11 IO流、功能流
  • windows 安装 Conda
  • IPsec VPN简介
  • 探索 Canva 的功能以及如何有效使用 Canva
  • python中匿名函数简单样例
  • 【SpringBoot】 什么是springboot(二)?springboot操作mybatisPlus、swagger、thymeleaf模板
  • 【JavaWeb】前后端分离SpringBoot项目快速排错指南
  • Go语言高级特性
  • 边缘计算安全有多重要
  • Uniapp开发入门:构建跨平台应用的全面指南
  • 初级银行从业资格证知识点(十)
  • 设计模式-13 - Prototype Design Pattern 原型设计模式
  • 05. 【Java教程】第一个 Java 程序
  • 网易灵犀办公企业邮箱的IMAP和POP3服务器地址
  • 吴恩达深度学习笔记:优化算法 (Optimization algorithms)2.3-2.5
  • 【正版系统】海外短剧系统功能介绍,前端uniapp+开源。
  • 位图(c++)
  • 音源分离 | Hybrid Spectrogram and Waveform Source Separation
  • 动态el-form表单以及动态禁用
  • 【Web后端】web后端开发简介_Servlet简介
  • Taylor Francis科技期刊数据库文献去哪里获取