2012-02-29 4 views
0

J'ai une application Django avec des graphiques de statistiques que je montre à l'utilisateur. J'ai également une option d'exportation pour ces graphiques. Lorsque je clique sur le bouton d'exportation, je crée csv sur le serveur et je le renvoie au client, de sorte que le fichier commence à télécharger immédiatement. Tout fonctionne très bien mais la création de csv prend du temps et je voudrais montrer quelques "attendre ..." gif jusqu'à ce que le fichier commence à télécharger. Quelle est la meilleure façon de le faire? (Je ne veux pas créer un lien de fichier temporaire et aller à ce lien après avoir obtenu la réponse ajax.) Mes django retourne vue:wait gif on export

response = HttpResponse(open("statistics.tar.gz").read(), content_type='application/tar.gz') 
response['Content-Disposition'] = 'attachment; filename=statistics_%s.tar.gz' % str(get_customer_date(request.customer, datetime.utcnow())).split(" ")[0] 
response['Content-Length'] = os.path.getsize("statistics.tar.gz") 
response.set_cookie("export_download", value='download') 
return response 

Répondre

0

Je crée une iframe invisible pour être la cible du lien. Et surCliquez sur ce lien, montrez le gif. Masquer quand iframe arrête le chargement :)

quelque chose comme ça (jamais testé, mais devrait fonctionner en théorie):

$("a#download-link").click(function(){ 
    $("#loading-div").show(); 
    $("body).append('<iframe id="myIframeId" ...>'); 
    $('iframe#myIframeId').attr('src', url); 
    $('iframe#myIframeId').load(function() { $("#loading-div").hide(); }); 
}); 
+0

Merci pour la réponse. Pouvez-vous expliquer ce que vous voulez dire exactement? (Pouvez-vous montrer un exemple de code ou donner un lien où lire à ce sujet) – alexarsh

+0

J'ai mis à jour ma réponse –

+0

Merci beaucoup, Alex – alexarsh