layui 数据表格使用python django提供的数据接口
数据库新建表
from django.db import models # Create your models here. class Host(models.Model): hostname = models.CharField(max_length=32,verbose_name="主机名") username = models.CharField(max_length=32,verbose_name="用户名") password = models.CharField(max_length=32,verbose_name="密码") sn = models.CharField(max_length=32,verbose_name="SN") pn = models.CharField(max_length=32,verbose_name="PN") start_date = models.DateField() end_date = models.DateField() exp_date = models.DateField()
执行以下命令生成数据表
python manage.py makemigrations
python manage.py migrate
添加 url路径
from django.contrib import admin from django.urls import path from app01 import views urlpatterns = [ path('admin/', admin.site.urls), #path('hello/', views.hello, name="hello"), path('host_data/', views.host_data), path('index/',views.index), ]
添加views
from django.shortcuts import render,redirect,HttpResponse from django.http import JsonResponse from app01 import models def host_data(request): book_list = models.Host.objects.all() book_list_count = book_list.count() print ("--43--总条数{}" .format(book_list_count)) print(len(book_list)) print(book_list.query,type(book_list)) list = [] res = [] for item in book_list: dict={} dict['id'] = item.id dict['hostname'] = item.hostname dict['username'] = item.username dict['password'] = item.password dict['sn'] = item.sn dict['pn'] = item.pn dict['start_date'] = item.start_date dict['end_date'] = item.end_date dict['exp_date'] = item.exp_date list.append(dict) print("打印list") print(list) data = {"code": 0, "msg": "ok", "count": book_list_count,"data":list} print("--返回json格式--") return JsonResponse(data, json_dumps_params={'ensure_ascii': False}) def index(request): return render(request,"host_list.html")
添加host-list.html文件
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>table 模块快速使用</title> <link rel="stylesheet" href="../static/layui/css/layui.css" media="all"> </head> <body> <table id="demo" lay-filter="test"></table> <script src="../static/layui/layui.js"></script> <script> layui.use('table', function(){ var table = layui.table; //第一个实例 table.render({ elem: '#demo' ,height: 500 ,url: '/host_data/' //数据接口 urls.py 里面定义的路由 ,page: true //开启分页 ,cols: [[ //表头 {field: 'id', title: 'ID', width:100, sort: true, fixed: 'left'} ,{field: 'hostname', title: '主机名', width:130} ,{field: 'username', title: '用户名', width:130, sort: true} ,{field: 'password', title: '密码', width:130} ,{field: 'sn', title: 'SN', width: 130} ,{field: 'pn', title: 'PN', width: 130, sort: true} ,{field: 'start_date', title: '开始日期', width: 130, sort: true} ,{field: 'end_date', title: '停止日期', width: 130} ,{field: 'exp_date', title: '保质期', width: 135, sort: true} ,{field: 'edit', title: '操作', width: 135, sort: true} ]] }); }); </script> </body> </html>
浏览器访问
出现以下json接口正常
layui表格不自动分页问题处理
第一页滚动鼠标展示了所有数据,点击第二页,不自动分页。
host-list.html添加以下代码即可。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>table 模块快速使用</title> <link rel="stylesheet" href="../static/layui/css/layui.css" media="all"> </head> <body> <table id="demo" lay-filter="test"></table> <script src="../static/layui/layui.js"></script> <script> layui.use('table', function(){ var table = layui.table; //第一个实例 table.render({ elem: '#demo' ,height: 500 ,url: '/host_data/' //数据接口 ,page: true //开启分页 ,cols: [[ //表头 {field: 'id', title: 'ID', width:100, sort: true, fixed: 'left'} ,{field: 'hostname', title: '主机名', width:130} ,{field: 'username', title: '用户名', width:130, sort: true} ,{field: 'password', title: '密码', width:130} ,{field: 'sn', title: 'SN', width: 130} ,{field: 'pn', title: 'PN', width: 130, sort: true} ,{field: 'start_date', title: '开始日期', width: 130, sort: true} ,{field: 'end_date', title: '停止日期', width: 130} ,{field: 'exp_date', title: '保质期', width: 135, sort: true} ,{field: 'edit', title: '操作', width: 135, sort: true} ]] , limits: [3, 5, 10,15,20,30] //一页选择显示3,5或10条数据 , limit: 10 //一页显示10条数据 , parseData: function (res) { //将原始数据解析成 table 组件所规定的数据,res为从url中get到的数据 var result; console.log(this); console.log(JSON.stringify(res)); if (this.page.curr) { result = res.data.slice(this.limit * (this.page.curr - 1), this.limit * this.page.curr); } else { result = res.data.slice(0, this.limit); } return { "code": res.code, //解析接口状态 "msg": res.msg, //解析提示文本 "count": res.count, //解析数据长度 "data": result //解析数据列表 }; } }); }); </script> </body> </html>
分页效果
12条数据分2页,一页10条
吃鸡id:开车撞死一群人