2011-10-31 42 views
0

我有一個非常長的任務,只要客戶端/用戶/客戶按下提交按鈕就會運行。我如何顯示消息來說,掛在...查詢運行,直到查詢完成使用Django?服務器運行時顯示消息查詢Django

+0

爲什麼不參加任務? (在一個線程中,用芹菜,....)。 (對不起,我知道這不是預期的答案,響應可能是這樣的:點擊'submit button'時顯示一個加載消息,當收到請求時,新頁面覆蓋舊頁面,'加載消息'被刪除。 :http://thecrumb.com/2011/01/21/simple-loading-dialog-wjquery-ui/) – danihp

+0

使用前端JavaScript在您提交時顯示一條消息。這聽起來像是一個更大的問題的開始,但你應該考慮使用異步解決方案 –

回答

0

這是我最終使用jQuery和包括一些代碼,以確定哪個按鈕被按下做:

<form> 
<div id="loading" style="display:none;">Finding all words, may take a long time</div> 
<div id="form_input_things"> 
<input type="submit" name="_save" value="Save" /> 
<input type="submit" name="_get_words" value="Get Words" /> 
{{ form.as_p }} 
</div> 
</form> 

<script> 
    $("form").submit(function() { 
    { 
     if($("[submit_button_pressed=Save]").get(0) === undefined) 
     { 
     $('#loading').show(); 
     $('#form_input_things').hide(); 
     } 
    } 
    return true;  
    }); 

    $(":submit").live('click', function() { 
     $(this).attr("submit_button_pressed", $(this).val()); 
    }); 
</script> 
+0

這段代碼沒有回答你最初的問題。順便說一句,謝謝你不接受我的答案... –

+0

它確實回答我的問題。消息出現,當查詢/提交返回新頁面並顯示結果時。它也更容易使用。 – Martlark

1

你應該考慮使用Ajax來做到這一點。

我們來看一個使用JQuery的例子; 如果在你的模板,你有這樣的形式:

<form id="my_form" action="" method="post"> 
    <label for="age">Age:</label> 
    <input type="text" name="age" id="age"/> 
    <input type="submit" value="Submit"/> 
</form> 
<div id="loading" style="display:none;">Loading...</div> 

讓我們寫一些JavaScript,假設你已經包括jQuery的lib目錄下:

$(function(){ 
    $('#my_form').submit(function(event){ 
     event.preventDefault(); 

     alert('user submitted the form'); 
     $('#loading').show(); 

     $.post('my_url', 
       {age : $('#age').val()}, 
       function(data){ 
        $('#loading').hide(); 
        alert('server finished to process data.'); 
       }); 
    }); 

}); 

您可以完全自定義這段代碼做什麼你要。 如果你想在阿賈克斯更多的調試,我建議你宣佈你ajaxSetup這種方式如下:

function ajaxSetup(){ 

    $.ajaxSetup({ 
     error:function(x,e){ 
      if(x.status==0){ 
       alert('You are offline!!\n Please Check Your Network.'); 
      }else if(x.status==404){ 
       alert('Requested URL not found.'); 
      }else if(x.status==500){ 
       alert('Internal Server Error.\n' + x.responseText); 
      }else if(e=='parsererror'){ 
       alert('Error.\nParsing JSON Request failed.'); 
      }else if(e=='timeout'){ 
       alert('Request Time out.'); 
      }else { 
       alert('Unknow Error.\n'+x.responseText); 
      } 
     } 
    }); 
} 
+0

這不是很Djangoey – Martlark

+0

@Martlark如果你真的想在Django中使用ajax,請檢查這個項目http://www.dajaxproject.com/可能有幫助:) –

+0

當我停止在下午睡覺時,我會嘗試使用dajaxproject。 – Martlark