10
votes

Django Télécharger le fichier CSV à l'aide d'un lien

Je suis un nouveau à Django et Python. Besoin de quelques conseils dans cette quête.

cas: lorsque l'utilisateur frappe le bouton Soumettre sur un formulaire, il doit afficher la page de réussite et un lien où ils peuvent télécharger les résultats. Les résultats sont dans le fichier Excel. Je peux créer une sortie pour exceller le fichier à l'aide du module XLWT et afficher la page de réussite individuellement mais pas à la fois en même temps. P>

Qu'est-ce que j'ai: Je suis en cours d'exécution Django1.1.1 sur Windows XP avec Python 2.6. Il y avait une question similaire posée mais n'a pas été capable de le faire fonctionner. p>

mon succès page.html a cette ligne p> xxx pré>

urls.py: p>

response = HttpResponse(mimetype='text/csv')
response['Content-Disposition'] = 'attachment; filename="backup.csv"'
writer = csv.writer(response, dialect='excel')    
#code for writing csv file go here...
for i in row:
    writer.writerow(i)
return response


0 commentaires

3 Réponses :


3
votes

dans vos urls.py changer xxx

à xxx

dans le premier, vous passez également tout après la vue / à la vue comme un autre paramètre, mais votre La vue n'accepte pas ce paramètre. Une autre option serait d'accepter ce paramètre dans la vue: xxx

mais puisque le chemin de votre fichier XLS est codé dur, je ne pense pas avoir besoin de cela.


1 commentaires

Merci mais cela donne cette erreur de trace d'erreur (appel le plus récent): Fichier "C: \ Python26 \ LIB \ Sites-Sites-Packages \ django \ core \ serveurs \ basehttp. py", ligne 280, en exécution self.finish_response () Fichier "C: \ Python26 \ Lib \ Site-Sites-Packages \ django \ core \ Servers \ basehttp. py", ligne 319, en finition_Response pour les données dans Self.Result: fichier "C: \ python26 \ liv \ site-site \ django \ http_ init _ .py ", ligne 378, dans le prochain chunk = self._iterator.next () fichier" C: \ python26 \ lib \ sites-packages \ django \ core \ serveurs \ basehttp . Py ", ligne 50, dans les données suivantes = self.filelike.read (Self.blksize) TypeError: Un entier est requis



10
votes

Maintenant, cela fonctionne, mais je devais changer l'extension de fichier d'Excel (.xls) à csv.

mon URLS.PY = URL (r '^ statique / exemple.txt', send_file)
Mon lien HTML = télécharger le fichier CSV
Ma vue.py xxx


0 commentaires

1
votes

dans les commentaires de Tri Raviv. Vous avez mentionné que cela vous donnait un

typeError: un entier

Ce qui est parce que lors de la création de fichiersWrapper, vous passez deux paramètres sur lesquels le second [facultatif] est censé être entier mais que vous avez passé 'rb'

wrapper = fichierwrapper (fichier (nom de fichier), "rb")

qui devrait effectivement être écrit comme ('RB' est le paramètre à fichier)

wrapper = filewrapper (fichier (nom de fichier, "rb"))

C'était donc juste un désalignement d'accolades, mais il est difficile de déboguer parfois.


0 commentaires