Je suis un nouveau à django et python. Besoin de conseils dans cette quête. Cas: Lorsque l'utilisateur appuie sur le bouton Soumettre d'un formulaire, il doit afficher la page Succès et un lien permettant de télécharger les résultats. Les résultats sont dans le fichier Excel. Je peux créer une sortie pour exceler le fichier en utilisant le module xlwt et afficher la page de succès individuellement mais pas les deux en même temps. Ce que j'ai: Je cours django1.1.1 sur Windows XP avec python 2.6. Il y avait une question similaire posée mais n'a pas été en mesure de le faire fonctionner.django télécharger le fichier csv en utilisant un lien
mon page.html succès a cette ligne
<a href="../static/example.xls">Download CSV File</a>
urls.py:
url(r'^static/(?P<path>.*)$', send_file),
views.py:
def send_file(request):
import os, tempfile, zipfile
from django.core.servers.basehttp import FileWrapper
"""
Send a file through Django without loading the whole file into
memory at once. The FileWrapper will turn the file object into an
iterator for chunks of 8KB.
"""
filename = "C:/example.xls" # Select your file here.
wrapper = FileWrapper(file(filename),"rb")
response = HttpResponse(wrapper, content_type='text/plain')
#response['Content-Length'] = os.path.getsize(filename)
return response
Lorsque je clique sur le lien, il donne erreur de chemin
send_file() got an unexpected keyword argument 'path'
Request Method: GET
Request URL: localhost:8000/webinput/static/example.xls
Exception Type: TypeError
Exception Value:
send_file() got an unexpected keyword argument 'path'
BTW example.xls est à la fois les emplacements C: /example.xls et dans le filtre statique
Structure:
- WebDB
- statique
- example.xls
- Entrée Web
- urls.py
- views.py
- models.py
- statique
je ces 2 modules. Si j'utilise backup_to_csv, cela fonctionne bien, mais il descend directement sans le lien. Comment faire la même chose quand j'ai déjà un fichier. S'il y a d'autres façons où je ne dois pas stocker le fichier, c'est bien aussi.
def xls_to_response (xls, FNAME):
response = HttpResponse(mimetype="application/ms-excel")
response['Content-Disposition'] = 'attachment; filename=%s' % fname
xls.save(response)
return response
def backup_to_csv (demande, ligne):
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
Merci, mais il donne cette erreur Traceback (appel le plus récent en dernier): fichier "C: \ Python26 \ lib \ site-packages \ django \ core serveurs \ \ basehttp.py", ligne 280, en terme self.finish_response() fichier "C: \ Python26 \ lib \ site-packages \ django \ serveurs de noyau \ \ basehttp.py", la ligne 319, en finish_response de données en self.result: fichier « C : \ Python26 \ lib \ paquets-de-site \ django \ http \ __ init__.py ", ligne 378, dans le suivant chunk = self._iterator.next() Fichier" C: \ Python26 \ lib \ site-packages \ django \ core \ servers \ basehttp.py ", ligne 50, dans suivant data = self.filelike.read (self.blksize) TypeError: un nombre entier est requis – user234850