gpt4 book ai didi

python - Django 从按钮调用函数,同时保持在同一页面上

转载 作者:太空宇宙 更新时间:2023-11-03 15:59:36 26 4
gpt4 key购买 nike

我有一个动态创建的表,其中包含来自 django 模型的数据。该表显示有关每个 data_element 的附加信息。

在最后一列中应该有

  • 是为每行显示的按钮,它将使用该特定 data_element 中的其他关键字运行脚本,而无需重新加载或卡住页面。
  • 如果脚本仍在运行(可能需要几个小时),则应该显示进度图标,并且
  • 如果脚本已经完成,应该会显示一个按钮,重定向到 results.html

如何使用 django 对其进行编程?目前我正在手动执行脚本,但为此我将重定向到另一个带有要解析的参数的模板,并且当执行脚本时(使用 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;
});
});

并且我的 View 通过单击按钮来调用:

 <input id="{{item.id}}" class='calculate-btn' name="update_log" type="button" value="Run Script" btn-data={{ item.id }}>

现在如何在脚本仍在运行时动态更改按钮?

最佳答案

您将需要一种方法来启动异步任务,以及一种获取任务状态的方法,然后添加相当多的 js/ajax 代码来启动任务并相应地更新表。

对于前两部分,规范的解决方案是 celery

关于python - Django 从按钮调用函数,同时保持在同一页面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40468354/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com