Перенаправить или обновить страницу после загрузки файла Django - PullRequest
0 голосов
/ 10 мая 2019

У меня есть какой-то код, чтобы сделать zip и сделать его загружаемым через браузер

Я пробую код из некоторой справки, например, чтобы он обновлялся после загрузки с помощью загрузки файла jquery

Django:перенаправить после загрузки файла https://jqueryfiledownload.apphb.com/

views.py

def backup(request):
...
...
if request.method == 'POST':
 ...
 ...
 zipper = shutil.make_archive(base_name = 
 os.path.join(settings.MEDIA_ROOT,file_download), format = 'zip', root_dir = backup_dir, base_dir = './' )
 shutil.rmtree(backup_dir)
 resp = HttpResponse(open(zipper, 'rb').read(), content_type = "application/octet-stream")
 resp['Content-Disposition'] = 'attachment; filename=%s.zip' % file_download
 resp['Set-Cookie'] = 'fileDownload=true; Path=/'
 del_dir = os.getcwd()
 os.remove(os.path.join(settings.MEDIA_ROOT,file_download+'.zip'))
 formm.save()
 return resp

файл можно загрузить

, а затем я пытаюсь добавить JS для обновления

backup.html


<input id="file_download" type="submit" class="btn btn-primary btn-block" value="Backup" name="backup"/>

<script type="text/javascript">
  $("#file_download").click(function() {
    $.fileDownload($(this).prop('type'), {
      preparingMessageHtml: "The file download will begin shortly, please wait...",
      failMessageHtml: "There was a problem generating your report, please try again."
    });
    return false; //this is critical to stop the click event which will trigger a normal file download!
  });
</script>

после добавления этого js-кода, в результате которого появится результат, появится окно с сообщением «Произошла ошибка при создании отчета, повторите попытку.»


журнал ошибок

[wsgi:error] [pid 8485:tid 139715727099648] [remote 192.168.137.10:34003] Not Found: /submit

1 Ответ

0 голосов
/ 10 мая 2019

Просмотр источника плагина fileDownload показывает параметры successCallback и failCallback.Чтобы перезагрузить страницу после успешной загрузки, попробуйте что-то вроде этого:

$("#file_download").click(function() {
    $.fileDownload($(this).prop('type'), {
      preparingMessageHtml: "The file download will begin shortly, please wait...",
      failMessageHtml: "There was a problem generating your report, please try again.",
      successCallback: function() { window.location.reload(true) }
    });
    return false; //this is critical to stop the click event which will trigger a normal file download!
  });
...