• 【django基础】django接口 异步ajax请求 导出数据库成excel表(包裹前端后端)


    py文件:

    from django.utils.http import urlquote
    from rest_framework.views import APIView
    from django.shortcuts import render, redirect, HttpResponse
    from dal import models
    from django.http import JsonResponse, FileResponse, StreamingHttpResponse
    import os
    
    import xlwt
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # C:UsersuserDesktopDownTest
    
    
    
    class fileShow(APIView):
    
        def get(self, request):
    
            message = {}
            userinfo = models.UserInfo.objects.all()
    
            workbook = xlwt.Workbook(encoding='utf-8')  # 新建工作簿
    
            sheet1 = workbook.add_sheet("用户表")  # 新建sheet
            sheet1.write(0, 0, "ID")  # 第1行第1列数据
            sheet1.write(0, 1, "用户名")  # 第1行第1列数据
            sheet1.write(0, 2, "密码")  # 第1行第1列数据
            sheet1.write(0, 3, "创建时间")  # 第1行第1列数据
    
            path = BASE_DIR + "\utils\username.xlsx" # 储存路径
    
            excel_row = 1
            for obj in userinfo:
                data_id = obj.id
                data_username = obj.username
                data_password = obj.password
                data_time = obj.create_time
    
                sheet1.write(excel_row, 0, data_id)
                sheet1.write(excel_row, 1, data_username)
                sheet1.write(excel_row, 2, data_password)
                sheet1.write(excel_row, 3, str(data_time))
                excel_row += 1
    
                workbook.save(path)
    
            file = open(path,'rb')   # 字符串替换成文件
            print("file",file.name)
            # file_names = file.name.split('/')[-1]
            # print("file_names",file_names)
    
            response = FileResponse(file)
            response['Content-Type'] = 'application/octet-stream'
    
            response['Content-Disposition'] = "attachment;filename={}".format(urlquote(path)) # 字符串替换成下载文件
            print(response)
            return response

    html的ajax请求:

    <button id="up">下载文件</button>  一个按钮
    
    
    请求:
    
    // 下载文件
        $("#up").on("click", function () {
            $.ajax({
                url: "down/",
                type: "get",
                data: {},
                success: function (data) {
                    var $a = $('<a></a>');
                    $a.attr("href", "http://127.0.0.1:8000/down/");  # 红色的是你下载路径
                    $("body").append($a);
                    $a[0].click();
                    $a.remove();
                }
    
            })
  • 相关阅读:
    url末尾的斜杠作用
    awk 工具可以很灵活地对文本进行处理,这里的 awk '{print $2}'是指第二列的内容,是运行的程序 ID。 杀死指定进程
    nil和空切片
    WaitGroup源码设计,
    2
    t
    Go内置的定时器
    分布式定时器
    1 2 交换
    order by 1 DESC 2 desc
  • 原文地址:https://www.cnblogs.com/wanghong1994/p/12702140.html
Copyright © 2020-2023  润新知