我有一个动态创建的表与Django模型的数据。此表显示有关每个data_element的附加信息。从按钮Django调用函数,同时停留在同一页
在最后一栏有要么
- 对于每一行显示一个按钮,将运行与该特定data_element其他关键字的脚本,而不需要重新装载或冻结页面。
- 如果脚本仍在运行(可能需要几个小时),应该有进度图标显示和
- 如果脚本已经完成,应该有显示的按钮,重定向到一个results.html
我怎样才能用django编程? 目前我正在手动执行脚本,但为此,我将其重定向到另一个模板,并使用args进行解析,并在执行脚本时(使用call_command('my_script',* args)页面冻结,直到脚本结束。
<form action="{% url 'calculate' element_id %}">
<input class="btn btn-primary-custom" id="submit" type="submit" value="run script">
</form>
我试图从这篇文章中插入代码: Django button ajax click
但是当我点击该按钮,没有任何反应我有什么做的,创建该表?
编辑 我的按钮的功能目前看起来是这样的:
$(document).ready(function(){
$('.calculate-btn').bind('click', function(){
function getCookie(name) {
var cookieValue = null;
if (document.cookie && document.cookie != '') {
var cookies = document.cookie.split(';');
for (var i = 0; i < cookies.length; i++) {
var cookie = jQuery.trim(cookies[i]);
// Does this cookie string begin with the name we want?
if (cookie.substring(0, name.length + 1) == (name + '=')) {
cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
break;
}
}
}
return cookieValue;
}
var btn-data= $(this).attr('btn-data');
var csrftoken = getCookie('csrftoken');
$.ajax({
type: 'POST',
url : "/run/",
dataType: "html",
data : {'csrfmiddlewaretoken': csrftoken, 'btn-data':btn-data},
success: function(data, status, xhr){
console.log("SUCCESS")
},
error: function(data, status, xhr){
console.log("ERROR")
}
});
return false;
});
});
和我的观点会从点击一个按钮叫:
<input id="{{item.id}}" class='calculate-btn' name="update_log" type="button" value="Run Script" btn-data={{ item.id }}>
如何我现在可以动态地更改按钮,而脚本仍在运行?
只要用户在运行时不能再次启动脚本,就不需要控制该进程。 如何在不离开页面的情况下为特定行生成一个子项? – Ali
好吧,我用'subprocess.Popen(['python','my_script.py',args])''运行脚本。如果完成,我可以使用'.pool()'检查该Python脚本,但是如何在网站上动态检查该脚本,而用户正在浏览? – Ali