Как вернуть CSV из приложения Pylons?
Я пытаюсь вернуть CSV из действия в моем webapp и дать пользователю приглашение загрузить файл или открыть его из приложения электронной таблицы. Я могу заставить CSV выплюнуть на экран, но как изменить тип файла, чтобы браузер узнал, что это не должно отображаться как HTML? Могу ли я использовать модуль csv для этого?
import csv
def results_csv(self):
data = ['895', '898', '897']
return data
Ответы
Ответ 1
Чтобы сообщить браузеру тип контента, который вы ему указываете, вам нужно установить заголовок Content-type
в текст /csv. В вашей функции Pylons следующее должно выполнить следующее задание:
response.headers['Content-type'] = 'text/csv'
Ответ 2
PAG правильный, но, кроме того, если вы хотите предложить имя для загруженного файла, вы также можете установить response.headers['Content-disposition'] = 'attachment; filename=suggest.csv'
Ответ 3
Да, вы можете использовать модуль csv для этого:
import csv
from cStringIO import StringIO
...
def results_csv(self):
response.headers['Content-Type'] = 'text/csv'
s = StringIO()
writer = csv.writer(s)
writer.writerow(['header', 'header', 'header'])
writer.writerow([123, 456, 789])
return s.getvalue()