Как вернуть 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()