欢迎来到海上华帆的博客园子

记录一些学习过程中的心得体会,供自己和有缘人参考!

分页导航 的两种实现方式 🆚

分页导航的实现方式有两种

一、使用 DataTables.js 插件来实现表格的搜索、排序和分页功能。分页导航是由 DataTables 动态生成的,并且通过自定义 CSS 进行了美化。

客户端分页:页面使用 JavaScript 插件 DataTables.js。
工作方式:后端一次性将所有用户或部门数据发送到前端模板,然后由 DataTables.js 在浏览器中进行处理,包括分页、搜索和排序。
模板代码:模板中,看不到类似 {% raw %}{% if is_paginated %}{% endraw %} 的分页代码块,因为分页导航是由 JavaScript 动态生成的。

需要引入

    <link rel="stylesheet" href="https://cdn.datatables.net/2.0.8/css/dataTables.bootstrap5.min.css">

    <script src="https://cdn.datatables.net/2.0.8/js/dataTables.bootstrap5.min.js"></script>

二、使用 Django 内置的、传统的服务器端分页 (Paginator)。

工作方式:后端视图(PositionListView)对数据进行分页处理,每次只将当前页的数据传递给模板。翻页时,浏览器会向服务器发起新的请求以获取下一页的数据。
模板代码:这个文件中有明确的 Django 分页模板代码:

        {% if is_paginated %}
        <nav aria-label="Page navigation">
            <ul class="pagination justify-content-center">
                ...
            </ul>
        </nav>
        {% endif %}

优缺点对比

特性 用户管理 / 部门管理 (DataTables.js) 职位管理 (Django Paginator)
实现方式 客户端 (JavaScript) 服务器端 (Python)
数据加载 初始加载所有数据,速度可能较慢 按需加载,初始加载快
用户体验 翻页、排序、搜索无需刷新页面,响应快 每次翻页都需要重新加载页面
适用场景 数据量不大时(几百到一两千条)体验好 数据量非常大时(成千上万条)性能更优
复杂度 前端需要额外引入和配置 JS 库 后端逻辑,Django 内置支持,相对简单

总结

  • 富客户端的实现方式,用户体验更流畅,但对初始加载的数据量有限制。
  • 传统的服务器端实现方式,更适合处理海量数据,但用户体验上稍逊一筹。
posted @ 2025-06-21 16:46  海上华帆  阅读(51)  评论(0)    收藏  举报