2012-06-27 2 views
0

Я не пытаюсь попросить бесплатную поездку, но я, похоже, не знаю, как это сделать вообще.Показать загрузку при переадресации страницы в Django

Мои недавние сообщения о работе в фоновом режиме, но мне не повезло в этом. Итак ...

  1. Пользователь нажимает run внутри формы и запускает работу.
  2. Требуется около 30 секунд для завершения задания, возврата и отображения функции отображения Django на return HttpResponseRedirect(....).

Таким образом, пока страница перенаправляется (требуется сигнал «GO AHEAD») .... Я хочу показать пользователю, как изображение загрузки GIF Ajax.

У меня нет 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 перед тем фактический АЯКС вызов, и в 'on_success' ответ, чтобы скрыть загрузчик gif.

Bu без AJAX - единственное решение, использующее итераторы - посмотреть на это: How to stream an HttpResponse with Django

Смежные вопросы