当页面在Django中重定向时显示加载

时间:2012-06-27 08:24:44

标签: javascript django

我不是要求搭便车,但我似乎根本不知道怎么做。

我最近的帖子是关于在后台运行工作,但我没有运气这样做。 所以......

  1. 用户点击表单中的run即可触发作业。
  2. 完成作业大约需要30秒,返回并将Django视图函数告诉return HttpResponseRedirect(....)
  3. 因此,当页面被重定向时(需要30秒才能发出“GO AHEAD”信号)....我想向用户展示像Ajax加载的GIF图片。

    我没有实现Ajax,系统太复杂,无法入侵。

    我们可以用javascript实际执行此操作吗?问题是它还没有加载任何页面,因为它需要heavy_work才能完成。

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

    谢谢!

2 个答案:

答案 0 :(得分: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');">

答案 1 :(得分:0)

使用AJAX很简单:只需在实际的ajax调用之前显示'loader'动画gif ,并在'on_success'响应回调中隐藏加载器gif。

Bu没有AJAX - 到目前为止唯一的解决方案是使用迭代器 - 看看这个:How to stream an HttpResponse with Django