Как отправлять файлы в ответ?

Чтобы отправить файл в ответ с помощью Django, вам понадобится использовать объект HttpResponse и функцию FileResponse. Вот пример кода:

from django.http import HttpResponse, FileResponse

def download_file(request):
    # Открываем файл для чтения
    file_path = '/путь/к/файлу'
    file = open(file_path, 'rb')
    
    # Создаем HttpResponse объект с типом контента "application/octet-stream",
    # что позволяет браузеру обрабатывать файлы любого типа
    response = HttpResponse(content_type='application/octet-stream')
    
    # Устанавливаем заголовок Content-Disposition для указания имени файла
    response['Content-Disposition'] = 'attachment; filename="%s"' % file_path
    
    # Копируем содержимое файла в HttpResponse объект
    response.write(file.read())
    
    # Закрываем файл
    file.close()
    
    return response

В данном примере, мы используем функцию open для открытия файла в двоичном режиме чтения ('rb'). Затем мы создаем объект HttpResponse с типом контента application/octet-stream, чтобы указать браузеру, что это файл для скачивания. Заголовок Content-Disposition содержит информацию о имени файла, которое будет отображаться при сохранении файла пользователем.

Затем мы используем метод write объекта response, чтобы записать содержимое файла в HTTP ответ. Наконец, мы закрываем файл и возвращаем объект response.

Это простой способ отправить файл пользователю в ответ на его запрос с использованием Django. Вы также можете настроить и другие параметры ответа, такие как content_type, status и др., чтобы адаптировать его к своим потребностям.