Я новичок в django и python. Вам нужно руководствоваться этим заданием.django скачать csv файл по ссылке
Дело: Когда пользователь нажимает кнопку отправки в форме, он должен отображать страницу успеха и ссылку, в которой они могут загрузить результаты. Результаты находятся в файле excel. Я могу создать выходной файл excel с помощью модуля xlwt и отображать страницу успеха отдельно, но не одновременно.
Что у меня: Я запускаю django1.1.1 на windows XP с python 2.6. Был задан аналогичный вопрос , но он не смог заставить его работать.
мой успех page.html имеет эту линию
<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
Когда я нажимаю на ссылку, он дает ошибка пути
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 находится в обоих местах, C: /example.xls и в статической папке
Структура:
- WebDB
- Статическая
- example.xls
- Webinput
- urls.py
- views.py
- models.py
- Статическая
я эти 2 модуля, а также. Если я использую backup_to_csv, он работает нормально, но он downlods напрямую без ссылки. Как сделать то же самое, когда у меня уже есть файл. Если есть другие способы, когда мне не нужно хранить файл, это тоже хорошо.
Защиту xls_to_response (XLS, имя_файла):
response = HttpResponse(mimetype="application/ms-excel")
response['Content-Disposition'] = 'attachment; filename=%s' % fname
xls.save(response)
return response
Защиту backup_to_csv (запрос, строка):
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
Спасибо, но это дает эту ошибку Traceback (последний звонок последний): Файл "C: \ Python26 \ Lib \ сайт-пакеты \ Джанго \ ядро \ серверов \ basehttp.py", строка 280, в перспективе self.finish_response() Файл "C: \ Python26 \ Lib \ сайт-пакеты \ Джанго \ ядро \ серверов \ basehttp.py", строка 319, в finish_response для данных в self.result: Файл «C : \ Python26 \ lib \ site-packages \ django \ http \ __ init__.py ", строка 378, в следующем chunk = self._iterator.next() Файл" C: \ Python26 \ lib \ site-packages \ django \ core \ servers \ basehttp.py ", строка 50, в следующем data = self.filelike.read (self.blksize) ТипError: требуется целое число – user234850