0

私はタダ乗りを求めているわけではありませんが、これを行う方法がまったくわからないようです。

私の最近の投稿は、バックグラウンドでジョブを実行することに関するものですが、それを行うのはうまくいきません。そう...

  1. ユーザーがフォーム内をクリックrunすると、ジョブが起動します。
  2. ジョブが完了するまでに約 30 秒かかり、戻り、Django ビュー関数を に伝えますreturn HttpResponseRedirect(....)

そのため、ページがリダイレクトされている間 (「GO AHEAD」の合図に 30 秒かかります)... Ajax の読み込み gif 画像のようにユーザーに表示したいと考えています。

私は Ajax を実装しておらず、システムが複雑すぎてハッキングできません。

実際にJavaScriptでこれを行うことはできますか? 問題は、終了する必要があるため、まだページをロードしていないことheavy_workです。

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

ありがとう!

4

2 に答える 2

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');">
于 2012-06-27T08:32:12.313 に答える
0

AJAX の使用は簡単です。実際の ajax 呼び出しの前に「ローダー」アニメーション gifを表示し、「on_success」応答コールバックでローダー gif を非表示にするだけです。

Bu AJAX なし - これまでの唯一の解決策はイテレータを使用することです - これを見てください: How to stream an HttpResponse with Django

于 2012-06-27T08:33:46.120 に答える