layui+python实现将数据从后端传回并以表格的形式显示

尝试了好久,终于实现了使用layui的table将后端的数据显示出来了。
html中添加表格:

<table id="demo" lay-filter="test"></table>

script中绑定数据:

<script>
    layui.use('table', function(data){
      var table = layui.table;

      //第一个实例
      table.render({
        elem: '#demo'
        ,height: 312
        ,url: '/show_list' //数据接口
        {#cols设置的首行中每一列的标题,注意field里面的名称一定要在后端指定出来,必须数据相对应,这样数据才能在前端显示出来,sort表示排序#}
        ,cols:[[
                        {field:'address',title:'存放地址',sort:true}
                        ,{field:'xgtm',title:'修改时间'}
                        ,{field:'xgjd',title:'执行进度'}
                    ]],
          page: {
                    layout: ['count', 'prev', 'page', 'next', 'skip'] //自定义分页布局
                    {#, groups: 2#}
                    , limit: 5
                {#这里limit设置一页多少行数据,前后端都要设置#}
                }
          ,even: true //开启隔行背景
          ,text:{
            none:'暂无相关数据,请先上传'
          }
      });

    });
    </script>

这里是后端数据传递

@app.route('/show_list')
def showlist():
    cursor=connect_mysql()
    sql2 = 'select count(*) from wd_record'
    cursor.execute(sql2)
    for item in cursor:
        count = item[0]
    page = request.args.get('page', '1')
    limit = request.args.get('limit', '5') 
    # limit后面的数据实际上是在如果前端没有数据传来的时候的默认值
    
    sql='select * from wd_record limit '+str((int(page)-1)*int (limit))+','+limit
    cursor.execute(sql)
    ans=cursor.fetchall()
    ans1=list(ans)
    zwlist=[]
    for temp in ans1:
        ans1[ans1.index(temp)]=list(temp)
    for temp in ans1:
    #这里由于数据库中时间的存储是datetime类型,直接传递并不能传递到前端,进行时间转换有点麻烦,然后就直接将其强制转换为字符串类型就可以传递到前端了
        temp[1]=str(temp[1])
        # 注意下面这个一定要指出来,而且名称应该和前面的数据名称相对应
        jlist={'address':temp[0],'xgtm':temp[1],'xgjd':temp[2]}
        zwlist.append(jlist)

    print('这是查询所有的语句')
    cursor.close()
    # count表示数据条数,会在前端显示,data里面传的是数据
    return json.dumps({'code':0,'msg':'','count':count,'data':zwlist})

然后运行出来的结果如下
在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
实现导出数据,你需要按照以下步骤进行操作: 1. 安装 pandas 和 django-excel-response 包,可以使用 pip install pandas 和 pip install django-excel-response 命令进行安装。 2. 在 views.py 文件中编写视图函数,用于处理导出数据的请求。在该函数中,你需要使用 pandas 库读取数据,并将其导出为 Excel 文件格式。然后将 Excel 文件返回给用户。这里使用 django-excel-response 包提供的 ExcelResponse 类来实现。 ```python import pandas as pd from django.http import HttpResponse from django_excel_response import ExcelResponse def export_data(request): # 从数据库中获取数据 data = YourModel.objects.all().values() # 转换为 Pandas 数据框 df = pd.DataFrame(list(data)) # 将数据导出为 Excel 文件 output = BytesIO() writer = pd.ExcelWriter(output, engine='xlsxwriter') df.to_excel(writer, index=False, sheet_name='Sheet1') writer.save() output.seek(0) # 返回 Excel 文件 return ExcelResponse(output.getvalue(), content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', status=200) ``` 3. 在 urls.py 文件中添加对应的 URL 路由,将导出数据的请求映射到视图函数。 ```python from django.urls import path from . import views urlpatterns = [ path('export-data/', views.export_data, name='export_data'), ] ``` 4. 在前端页面上添加一个导出数据的按钮,并使用 AJAX 请求后端视图函数,从而实现导出数据的功能。 ```html <button id="export-btn">导出数据</button> <script> $(document).ready(function() { $('#export-btn').click(function() { $.ajax({ url: '/export-data/', type: 'GET', success: function(response) { // 下载 Excel 文件 var link = document.createElement('a'); link.href = window.URL.createObjectURL(response); link.download = 'data.xlsx'; link.click(); } }); }); }); </script> ``` 这样就可以使用 Django、Layui 和 Pandas 实现导出数据的功能了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值