Django 进度条前端实时更新后端处理进度 – python后端实现进度条

本文介绍了一种在Django框架中实现进度条的方法,通过前端JavaScript定时请求后端获取处理进度,实现实时更新进度条的效果。

今天在做自动化交易程序 的时候,需要有个界面要展示进度条.因为工程是用 django 框架开发.很多知识都需要自己去学习.

自己找了很多的方法 去实现 django 的进度条功能. 网上搜搜了很多, 对于小白来说都没有很好的教程实现 Python 后端实现进度条的功能. 

作为开源程序的倡导者,我要贡献给刚入门的朋友. 大牛请飘过......

 

 

 

这是程序效果, 下边的是打印的一些日志. 这个可以取消. 关键是 django Python 后端进度条的功能已经实现. 前端是基于基于bootstrap的进度条. 这个不动的自行百度.不过我在写程序的时候仅知道 bootstrap 是一个前端框架而已.不需要了解太多.除非你是前端攻城狮 项目用的很多.

1.Python 后端进度条交互逻辑:


点击页面的“展示进度条测试数据”button,向后台发送数据处理请求;
后台处理数据;process_data

前端根据后台的处理进度实时更新进度条。

此程序 的负载主要集中在前端,所以对后端的负载很小. 

 

2. Python 后端进度条 前端 代码:

 

2.1 UI html 

Html页面用boostrap的进度条, 进度条由2个div嵌套而成,修改内层div的width可以更新进度

<body>
    <!--1. 按钮-->
    <div class="container">

        <button class="btn btn-default" type="button">展示进度条测试数据</button>


	    <!--2. 进度条-->
	    <div  class="progress-div">
	        <div class="progress">
	            <div class="progress-bar progress-bar-striped active" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: 2%;">
	                2%
	            </div>
	        </div>
	    </div>

    </br>

         <div class="progress-text progress-bar-striped active"  role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="100" style="min-width: 2em; width: 2%;">

	            </div>



    </div>
</body>

 

2.2  javascript 代码实现 (主要功能)

 

这里边可以看到在更新前端界面的时候设置 10 秒钟去更新后台的数据.这个地方因为测试的数据特别快,在正常的业务中可以设置 1 秒.

在 点击click方法中

1.设置一个setInterval函数,用于持续请求后台进度,不断更新进度条;
2. 向后台发送数据处理请求,当该请求成功返回后结束setInterval函数,并更改进度条样式。
由于setInterval和getJSON的回调函数都是异步执行,这里就相当于做了个登记,将任务加入队列。
 

<script>

 $(function () {
        $('.btn').on('click', function () {
                console.log("come in ")
                var log = ""
                var sitv = setInterval(function(){

                    var prog_url = '/show_progress'              // prog_url指请求进度的url,后面会在django中设置
                    $.getJSON(prog_url, function(num_progress){


{#                         console.log("come in num_progress="+num_progress)#}
                        log = log + num_progress+ "-"
                        $('.progress-div').css('visibility', 'visible');
                        $('.progress-bar').css('width', num_progress + '%');
                        $('.progress-bar').text(num_progress + '%');
                        $('.progress-text').text( '显示日志'+log );
                        $('.progress-text').css('width', '100%');

            {#            $('#prog_in').width(res + '%');     // 改变进度条进度,注意这里是内层的div, res是后台返回的进度#}
                         if(num_progress == '99'){
                              console.log("come in 99")
                            clearInterval(sitv);
                            $('.progress-bar').css('width', '100%');
                            $('.progress-bar').text('100%');
                        }

                    });


                }, 10);                                 // 每10毫秒查询一次后台进度


            var thisurl = '/process_data'                      // 指当前页面的url
{#            var yourjson = '90'#}
            $.getJSON(thisurl, function(res){
            // ...

             console.log("sitv over res"+res)
                clearInterval(sitv);                   // 此时请求成功返回结果了,结束对后台进度的查询
            });

        })
})



</script>

2.3Python 后端进度条后端 逻辑代码

我这里使用的后端为Django, 使用别的后端思路相当。


2.3.1. URL.PY

设置两个url, 一个指向处理数据的的函数,另一个指向请求进度的函数

你可以看到还有一个 ,那个是 UI 展示的, 你可以把源码下载下来,部署一下程序然后就可以运行了. 

 

 

 

2.3.2 views.py

用全局变量记录处理进度,process_data函数负责具体任务,同时更新后台进度值,show_progress负责将当前进度值返回给前端。这里用了 全局变量  global num_progress

#encoding=utf-8

from django.http import JsonResponse
from django.shortcuts import render
import time


num_progress = 0 # 当前的后台进度值(不喜欢全局变量也可以很轻易地换成别的方法代替)




'''
展示界面 UI
'''
def show_progress1(request):
    # return JsonResponse(num_progress, safe=False)
    return render(request, 'datahexun.html')



'''
后台实际处理程序
'''
def process_data(request):
    # ...
    global num_progress

    for i in range(12345666):
        # ... 数据处理业务
        num_progress = i * 100 / 12345666; # 更新后台进度值,因为想返回百分数所以乘100
        # print 'num_progress=' + str(num_progress)
        # time.sleep(1)
        res = num_progress
        # print 'i='+str(i)
        # print 'res----='+str(res)
    return JsonResponse(res, safe=False)

'''
前端JS需要访问此程序来更新数据
'''
def show_progress(request):
    print 'show_progress----------'+str(num_progress)
    return JsonResponse(num_progress, safe=False)

 

此程序到此结束 . 至于如何运行 django 程序请百度一下. 此源码已经开源. 源码链接: https://github.com/chaoren399/progress_bar_demo

内容概要:本文研究了基于阶跃响应的V-Tiger自动增益调整PID控制器优化方法,并提供了完整的Matlab代码实现。通过深入分析PID控制的核心性能指标与V-Tiger控制器的动态特性,提出了一种融合阶跃响应特征提取与多目标协同优化的自动整定方案,设计了具备自适应迭代校正能力的优化机制,有效提升了控制系统的响应速度、稳定性和抗干扰能力。文中系统阐述了整定原理、算法架构设计及性能验证流程,通过仿真实验充分验证了该方法在复杂工业控制场景下实现高精度参数自整定的可行性与优越性,为智能PID控制提供了可复现、可拓展的技术路径。; 适合人群:具备自动控制理论基础和Matlab编程能力,从事控制工程、自动化、电气工程等领域研究的研发人员及高校研究生。; 使用场景及目标:①应用于需要高精度PID参数整定的工业控制系统中,如电机驱动、温度控制、电力电子变换器等;②为科研人员提供一种可复现、可扩展的智能PID整定方法,用于提升系统动态性能与鲁棒性;③作为教学案例帮助学生理解PID整定原理与现代优化算法的融合应用。; 阅读建议:建议读者结合文中的Matlab代码逐模块运行与调试,重点关注阶跃响应特征提取与增益优化策略的实现逻辑,同时可尝试将其应用于实际控制系统中进行对比验证,以深化对自动整定机制的理解。
内容概要:本文围绕一种集成DoS攻击、二次控制、下垂控制与事件触发式负荷控制的四机并联孤岛微电网系统展开研究,旨在实现微电网在遭受网络攻击时仍能维持电压与频率稳定,并完成功率的精确共享分配。通过Simulink仿真实现,系统融合了多种先进控制策略,重点构建了一个具有高容错性与强鲁棒性的分布式控制架构。该架构不仅能够有效抵御拒绝服务(DoS)等网络攻击对通信链路造成的干扰,还能借助事件触发机制显著降低通信频率与资源消耗,从而提升系统实时性与运行效率。研究深入探讨了多逆变器间的协同控制逻辑,实现了在孤岛运行模式下系统的动态响应优化与稳态性能提升。; 适合人群:具备扎实的电力电子、自动控制理论与微电网系统基础知识,熟悉Simulink/MATLAB仿真环境,从事微电网、分布式能源系统、智能电网安全防护、网络物理系统(CPS)等领域研究的研究生、科研人员及高级工程技术开发人员。; 使用场景及目标:①探究微电网在面临网络安全威胁(特别是DoS攻击)时的稳定性维持与恢复机制;②实现孤岛模式下多分布式电源(DG)并联系统的电压频率精准调控与有功/无功功率均分;③应用事件触发控制策略以减少不必要的通信负担,提高系统能效与实时响应能力;④为构建高可靠、自适应、低通信开销的下一代智能微电网控制系统提供理论依据与仿真验证范例。; 阅读建议:建议读者结合文中详细的Simulink模型与控制算法设计,逐步复现仿真过程,重点关注DoS攻击模块的建模方式、二次控制与下垂控制的协同机制、事件触发条件的设定及其对系统性能的影响,并可通过修改攻击强度、通信延迟、负载变化等参数,深入分析系统在不同工况下的鲁棒性与动态响应特性。
内容概要:本文系统研究了基于事件触发分布式策略的孤岛微电网二次频率与电压恢复控制方法,提出一种面向通信优化的分布式协同控制框架。通过引入动态事件触发机制,有效降低系统通信频次与网络负载,提升控制效率与资源利用率;结合分布式二次控制策略,实现对微电网频率和电压偏差的精确补偿,保障孤岛运行模式下系统的稳定性、电能质量及功率均分性能。研究在Simulink平台构建多逆变器协同控制仿真模型,全面验证所提策略在负载突变、通信延迟等典型工况下的有效性、鲁棒性与动态响应特性,为高比例分布式电源接入场景下的微电网控制提供了理论支持与技术路径。; 适合人群:具备电力系统、自动化、新能源等相关专业背景,从事微电网控制、分布式能源系统、智能配电网等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于孤岛微电网实现频率与电压的快速、精准恢复;②优化通信资源消耗,适用于通信条件受限的实际工程场景;③为含多分布式电源的智能微网系统提供高效、可靠的二次控制解决方案; 阅读建议:建议结合提供的Simulink仿真模型进行实践操作,重点剖析事件触发条件的设计逻辑、分布式控制协议的实现流程及仿真结果的动态性能分析,以深入掌握控制机理与系统协同优化方法。
这个是完整源码 java实现 大数据 Spark 可视化大屏+Kafka+SpringBoot+Vue3 【大数据毕业设计】基于Spark实时交通流量分析与拥堵预测系统(Java版本+可视化大屏+Kafka+SpringBoot+Vue3) 源码+论文 完整版 数据库Mysql 随着城市化进程不断加快,机动车保有量持续上升,城市道路拥堵问题日益突出。传统交通管理系统多依赖人工巡查与事后统计,难以对海量、高速产生的交通流数据进行实时感知与趋势研判,导致调度决策滞后。为缓解上述问题,本文设计并实现了一套“基于Spark实时交通流量分析与拥堵预测系统”。系统采用前后端分离架构:前端基于Vue3、Vite、Element Plus与ECharts构建管理后台与可视化大屏;后端基于Java 17与Spring Boot 3提供REST接口,结合Spring Security与JWT完成管理员身份认证与权限控制;数据层使用MySQL 8存储路段、流量、统计与预测结果,持久层采用MyBatis-Plus;实时链路引入Kafka作为交通事件消息中间件,使用Apache Spark完成窗口聚合统计,并基于Spark ML线性回归实现车流量预测与误差评估(RMSE、MAE、MAPE)。 系统实现了管理员登录与个人中心、道路路段管理、交通流量查询、实时窗口统计、拥堵预测分析以及可视化大屏展示等功能。针对Kafka不可用场景,系统提供纯Java写库降级策略,保证演示与运行的鲁棒性。测试结果表明,系统能够稳定完成交通事件采集、实时统计分析与拥堵趋势预测,界面交互清晰,数据展示及时,满足本科毕业设计对完整性、可演示性与技术综合性的要求。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值