版本:css
django:2.1.7前端
python:3.7python
Django架构中自带了后端分页的技术,经过Paginator进行分页,前端点击按钮提交后台进行页面切换。jquery
优缺点:后端分页对于数据量大的场景有其优点,但页面切换比较慢。django
后端分页python3代码以下:bootstrap
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实现表格前端分页,参数能够都为空,只是默认显示都为英文。缓存
具体包括了表格前端分页,每页显示几条数据,快速搜索功能,按表头排序,自定义提示等功能。架构
优缺点:前端分页使用与处理数据量不是很是大的场景,页面的切换速度很是快,由于数据都在前端缓存了。url
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,能够复用到多个表格中。
可是,对于有些表格,可能不想要每页显示几条数据,快速搜索的功能,则能够增长以下设置:
$('#table1').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 %}
最后,效果以下: