0

我不是想要求搭便车,但我似乎根本不知道如何做到这一点。

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

  1. 用户在表单内单击run并触发作业。
  2. 完成工作、返回并告诉 Django 视图函数大约需要 30 秒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。

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

于 2012-06-27T08:33:46.120 回答