djnago Excel数据上传进度条

最近处理一个小问题,点击上传excel数据表格,并显示进度条

直接调用ajax中xhr来显示进度条,发现进度条瞬间100%,页面数据并没有显示(原因:上传文件进度完成,但数据并没有完全存入数据库)

解决方法:获取数据存储的进度

在后台设置全局变量,获取存入数据库进度
number_x = None
number_y = None
class CaseImportsView(AdminUserRequiredMixin, JSONResponseMixin, FormView)       
    global number_x
    global number_y
    pass

创建一路由,发送前台

class JinDuTioaView(View):

    def get(self, request, *args, **kwargs):
        print(number_x, "yyyyyyyyyyyyyyyyy")
        print(number_y)
        number = [number_x, number_y]
        return HttpResponse(json.dumps(number, ensure_ascii=False))

前台处理(进度获取ajax,通过定时器,100ms请求一次,获取进度)
var xhr_provider = function() {
    var xhr = new XMLHttpRequest();
    var prog_url = xxxxx
    var xx
    var sitv = setInterval(function () {
        $.ajax({
            type: "get",
            url: prog_url,
            contentType: "application/json",
            dataType: "json",
            success: function (res) {
                xx = parseInt(res[1])
                var x = parseInt(res[1])
                var y = parseInt(res[0])
                var ele = document.getElementById('3');
                var percent = Math.round(x * 100 / y);
                ele.style.width = percent + '%';
                console.log("1111111111111111111", percent)
                document.getElementById('2').innerHTML = percent + '%';
                if (percent == 100) {
                    clearInterval(sitv)
                    document.getElementById('upload_hint').innerHTML = '上传完成!'
                } else {
                    document.getElementById('upload_hint').innerHTML = '正在导入中...请不要重复点击“确认”按钮'
                }

            }
        })
    }, 100)

    return xhr;

};

 

点击上传按钮,显示进度

$.ajax({
    url: xxxx,
    type: 'post',
    dataType: 'json',
    // async: false,
    data: {
        "csrfmiddlewaretoken": $("[name=csrfmiddlewaretoken]").val()
    },
    // processData: false,
    xhr: xhr_provider,
    success: success
});

 

完成,,方法比较笨,见谅

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值