2012-06-27 47 views
0

我不想要求搭便車,但我似乎並不知道如何做到這一點。當頁面在Django中重定向時顯示加載

我最近的帖子是關於在後臺運行的工作,但我沒有這樣做的運氣。 因此...

  1. 用戶單擊表格中的run,它會觸發一個工作。
  2. 大約需要30秒才能完成作業,返回並將Django視圖函數告知return HttpResponseRedirect(....)

所以,當頁面正在重定向(需要30秒來發信號「GO AHEAD」)....我想顯示用戶像一個Ajax加載gif圖片。

我沒有實現Ajax,系統太複雜了。

我們真的可以用javascript做到這一點嗎?問題是它尚未加載任何頁面,因爲它需要heavy_work才能完成。

result = heavy_work(....) 
.... more code .... 
return HttpResponseRedirect(go to this page...) 

謝謝!

回答

0

爲什麼不使用常規的ajax調用?

的JavaScript

function do_heavy_lifting(argument) { 
    $.ajax({ 
     type: 'GET', 
     data: { argument: argument }, // if necesarry 
     url: '/heavy_lifting_django_view_url/', 
     beforeSend: function() { 
      $('#loading').show(); 
     }, 
     success: function(data) { 
      ...redirect... 
     }, 
     cache: false 
    }); 
} 

HTML

<div id="loading" style="display:none"> 
<button onclick="do_heavy_lifting('argument');"> 
0

使用AJAX很簡單:只顯示之前gif動畫一個 '裝載機' 實際的Ajax調用,並在 'on_success'響應回調來隱藏加載器的gif。

Bu沒有AJAX - 目前唯一的解決方案是使用迭代器 - 看看這個:How to stream an HttpResponse with Django

相關問題