Django中使用JS通过DataTable实现表格前端分页,每页显示页数,搜索等功能

版本:

django:2.1.7

python:3.7

Django架构中自带了后端分页的技术,通过Paginator进行分页,前端点击按钮提交后台进行页面切换。

优缺点:后端分页对于数据量大的场景有其优势,但页面切换比较慢。

后端分页python3代码如下:

paginator = Paginator(stat_list, numtmp)
    try:
        flight_stats = paginator.page(1)
    except PageNotAnInteger:
        flight_stats = paginator.page(1)
    except EmptyPage:
        flight_stats = paginator.page(paginator.num_pages)
    if messageinfo_list:
        msg_num = len(messageinfo_list)
        msg_last = models_frame.TabAlarmInfo.objects.latest(‘id‘)
        msg_last_content = msg_last.alarm_content
        tim_last = (datetime.datetime.now() - msg_last.alarm_time).seconds / 60
    else:
        msg_num = 0
        msg_last_content = ‘‘
        tim_last = ‘‘

我们也可以根据自己的使用场景:不使用Django自带的分页,使用Jquery DataTable.js 插件进行前端分页处理。

JS通过DataTable实现表格前端分页,参数可以都为空,只是默认显示都为英文。

具体包括了表格前端分页,每页显示几条数据,快速搜索功能,按表头排序,自定义提示等功能。

优缺点:前端分页使用与处理数据量不是非常大的场景,页面的切换速度非常快,因为数据都在前端缓存了。

JS代码如下:

 <!-- DataTables -->
  <link rel="stylesheet" href="/static/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css">

<!-- DataTables -->
<script src="/static/bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
<script src="/static/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>

   $(‘#table1‘).DataTable({
        autoWidth:true,////不开启自动宽度,用bootstrap的自适应去调整
        "lengthMenu": [10, 20, 50, 100],//表格行数选择框内数目 显示2条,4条,20条,50条
        "displayLength": 10,//默认的显示行数 (也就是每页显示几条数据)
        "order": [],
        "language": {//自定义语言提示
            "processing": "处理中...",
            "lengthMenu": "显示 _MENU_ 项结果",
            "zeroRecords": "没有找到相应的结果",
            "info": "第 _START_ 至 _END_ 行,共 _TOTAL_ 行",
            "infoEmpty": "第 0 至 0 项结果,共 0 项",
            "infoFiltered": "(由 _MAX_ 项结果过滤)",
            "infoPostFix": "",
            "url": "",
            "thousands": "‘",
            "emptyTable": "表中数据为空",
            "loadingRecords": "载入中...",
            "infoThousands": ",",
            "paginate": {
                "first": "首页",
                "previous": "上页",
                "next": "下页",
                "last": "末页"
            }
        }
    });
table1为自己表格的id,可以复用到多个表格中。但是,对于有些表格,可能不想要每页显示几条数据,快速搜索的功能,则可以增加如下设置:
$(‘#dyntable1‘).dataTable({
        searching : false, //去掉搜索框方法一:百度上的方法,但是我用这没管用
        sDom : ‘"top"i‘,   //去掉搜索框方法二:这种方法可以,动态获取数据时会引起错误
        bFilter: false,    //去掉搜索框方法三:这种方法可以
        bLengthChange: false,   //去掉每页显示多少条数据方法
});

CSS样式部分也可以根据类名设置:

{% block style %}
 <style>
     .table tr th {
    font-size: 12px;
    text-align: center;
    vertical-align: middle;
    }
    .table tr td {
    font-size: 12px;
    text-align: center;
    vertical-align: middle;
    }
    [aria-controls="example1"] {
        font-size: 12px;
    }

    li{list-style: none; margin: 0px; padding: 0px;}/*这里设置*/
    ul{margin: 0px; padding: 0px;}/*这里设置*/

  </style>
{% endblock style %}

最后,效果如下:

 

原文地址:https://www.cnblogs.com/AndrewYin/p/11185049.html

时间: 2024-12-17 00:10:37

Django中使用JS通过DataTable实现表格前端分页,每页显示页数,搜索等功能的相关文章

Django中载入js和css文件

Django中载入js和css文件 项目的文件夹结构例如以下: mysite |-mysite |-|-static |-|---js和css文件 |-|-|-init.py |-| |-models.py |-| |-views.py |-|-init.py |-|-settings.py |-|-urls.py |-templates |-|-(template html 文件) settings.py中static变量的设置: STATIC_ROOT = os.path.join(os.p

Django 中的js文件 post请求的url无法使用使用{% url ‘path’ %}

具体问题: 解决方法1:

解决Django中在.js文件中用ajax请求后端,找不到CSRF问题

function getCookie(name) { var cookieValue = null; if (document.cookie && document.cookie !== '') { var cookies = document.cookie.split(';'); for (var i = 0; i < cookies.length; i++) { var cookie = jQuery.trim(cookies[i]); // Does this cookie s

Jquery的DataTable插件 AJAX 服务器分页的的学习心得(java版)

首先得先引入对应的js 1.jquery.min.js  首先导入 2. File:        jquery.dataTables.min.js Version:     1.9.4     这是我使用的版本 这是  jsp 页面 关键的table  代码 <table id="fuck" class="table table-bordered data-table"> <thead> <tr> <span style=

JS小插件之1——pager 分页

学习JS大半年之久,第一次自己尝试写一些小插件,写法参考网上某位牛人写代码的思路. 此处代码写的是静态分页.如果需动态分页,还可以修改下.第一次写,还有很多地方可以优化.希望各位大牛踊跃拍砖. 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" Content="text/html; charset=utf-8;"> 5 <t

Django中加载js和css文件

Django中加载js和css文件 项目的目录结构如下: mysite |-mysite |-|-static |-|---js和css文件 |-|-|-init.py |-| |-models.py |-| |-views.py |-|-init.py |-|-settings.py |-|-urls.py |-templates |-|-(template html 文件) settings.py中static变量的设置: STATIC_ROOT = os.path.join(os.path

C#:使用OleDb从Excel表格中读取信息到DataTable

从Excel表格中将数据读入到DataTable数据类型中,我是通过使用OLEDB来实现的 (OLEDB是Object Linking and Embedding Database的缩写) 现有一个扩展名为xlsx的工作簿文件"节气表.xlsx",在工作表Sheet1中有24个节气的信息 本文中的示例程序(代码将在后面给出)读取这个数据表后的效果如下图: 可以看出:OleDb读入一个Excel工作表(Sheet)的数据后,工作表的第一行会变成标题,第二行起,逐行变为DataTable的

tbl.js div实现的表格控件,完全免费,no jquery

html上现在有比较好用的表格控件是datatable,但是编辑.按钮等部分是收费的,只有基础功能免费.而且尺寸发生变化时需要手工刷新等繁琐操作较多.所以我开发一个免费的供大家使用. 本项目已用于“虚空服务器开发套件”.目前主要支持微软Edge浏览器,Chrome浏览器,其它未测. tbl.js完全免费,可随意修改,欢迎fork. tbl.js支持列表样式,增删改查,全表搜索,分组,分页功能,全表编辑,全行编辑,单选,多选,样式定制. 可以嵌入到各种容器中,比如jquery的dialog,tab

Django中的Json知识拾遗

  在做Django项目时,用到了很多AJax的知识,说到Ajax就会涉及到json的知识,因此索性准备来一篇博客,将项目过程中遇到的问题记录下,以方便日后的查阅. 一.什么是JSon? JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据. 简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言. 易于人阅读和编写,