Отправлять файл как ответ, а не путь к файлу.Как отправить xlsx файл как ответ в python - PullRequest
0 голосов
/ 13 декабря 2018

Я прочитал данные из mysqldb, записал их в файл xlsx и сохранил в каталоге с помощью xlsxwriter.Теперь я хочу отправить ответ как файл xlsx, а не путь к файлу.Можете ли вы, пожалуйста, кто-нибудь помочь мне сделать это.

  filter_data = (('Shankar','100','Good'),('Sekar','20','Bad'),('Sugu','100','Good'))
  workbook = xlsxwriter.Workbook('report.xlsx')
  worksheet = workbook.add_worksheet()
  for row, x in enumerate(filter_data):
    for col, y in enumerate(x):
      worksheet.write(row, col, str(y))
  workbook.close()

Я хочу отправить ответ в виде файла xlsx в python.Я попытался, как показано ниже

response = HttpResponse(content_type='application/ms-excel')
response['Content-Disposition'] = 'attachment; filename="report.xlsx"'
return response

Вышеупомянутое заявление, которое я использовал.Но я получаю следующую ошибку не возвращает объект HttpResponse.Вместо этого он вернул None.

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

попробуйте

with open("path/report.xlsx", "rb") as excel:
     data = excel.read()
response = HttpResponse(data, content_type='application/ms-excel')
response['Content-Disposition'] = 'attachment; filename="report.xlsx"'
return response
0 голосов
/ 13 декабря 2018

В HttpResponse вы должны указать содержимое файла, который вы хотите отправить пользователю:

response = HttpResponse(content=content, content_type='application/ms-excel')

Где content - это файловый объект или проверка содержимого, которое вы хотитеотправить пользователю для загрузки.

...