我有一個動態創建的表與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