Файл ответа Django, а также некоторые текстовые данные - PullRequest
0 голосов
/ 07 ноября 2019

В настоящее время я отправляю zip-файл в ответ от моего контроллера Django-Rest, zip-файл загружается в интерфейс, и эта функция работает нормально, но теперь я хочу отправить некоторые данные вместе с zip-файлом вответ, есть ли способ?

Это мой код контроллера Django-REST

response = HttpResponse(byte_io.getvalue(),content_type='application/x-zip-compressed')

response['Content-Disposition'] = f'attachment;filename{my-sample-zip-file}'

return response

Как я могу отправить некоторые данные с этим файлом zip на интерфейс?

1 Ответ

0 голосов
/ 11 ноября 2019

Вы можете сделать это с помощью модуля HTTP Request-Response django. См .: https://docs.djangoproject.com/en/2.2/ref/request-response/#telling-the-browser-to-treat-the-response-as-a-file-attachment

Если вы хотите сделать это в производственном режиме, например, код, вы можете также обработать случай, когда файл недоступен, установить ошибку и вернуть аккуратно. Кроме того, лучше поместить это в общий файл и затем определить download_file, как показано ниже:

from common_library import FileResponse
from django.http import JsonResponse

    def download_file( self ):
    if self.error_response:
        response = JsonResponse( { "error" : self.error_response } ) 
    else:    
        response = FileResponse(self.report_file_abs_path,  self.report_filename)
        response['Content-Type'] = 'application/xlsx'
        response['Content-Disposition'] = 'attachment; filename=' + self.report_filename
    return response

ПРИМЕЧАНИЕ. FileResponse - это определенная пользователем функция-обертка, которую вы можете определить.

...