Как вернуть CSV из приложения Pylons? - PullRequest
11 голосов
/ 26 апреля 2009

Я пытаюсь вернуть CSV из действия в моем веб-приложении и дать пользователю приглашение загрузить файл или открыть его из приложения для работы с электронными таблицами. Я могу заставить CSV выплевывать на экран, но как мне изменить тип файла, чтобы браузер распознал, что он не должен отображаться как HTML? Могу ли я использовать модуль CSV для этого?

import csv

def results_csv(self):

    data = ['895', '898', '897']

    return data

Ответы [ 3 ]

12 голосов
/ 26 апреля 2009

Чтобы сообщить браузеру тип контента, который вы ему предоставляете, вам нужно установить заголовок Content-type на text / csv. В вашей функции Pylons следующее должно выполнять эту работу:

response.headers['Content-type'] = 'text/csv'

9 голосов
/ 26 апреля 2009

PAG верна, но, кроме того, если вы хотите предложить имя для загруженного файла, вы также можете установить response.headers['Content-disposition'] = 'attachment; filename=suggest.csv'

8 голосов
/ 17 сентября 2009

Да, вы можете использовать модуль 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()
...