РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
360 of 818 menu

Класс FileResponse

Класс FileResponse наследуется от StreamingHttpResponse и предназначен для эффективной отдачи файлов клиенту. Он автоматически устанавливает правильные заголовки Content-Type и Content-Disposition на основе переданного файла. В отличие от стандартного HttpResponse, который загружает весь файл в память, FileResponse читает файл по частям, что делает его оптимальным выбором для больших файлов. Класс принимает файлоподобный объект в качестве первого аргумента и поддерживает параметры для управления размером буфера и заголовками ответа.

Синтаксис

from django.http import FileResponse FileResponse(file, as_attachment=False, filename='', **kwargs)

Пример

Давайте создадим простой ответ с файлом изображения:

from django.http import FileResponse from django.shortcuts import render def download_image(request): file_path = 'media/images/photo.jpg' file = open(file_path, 'rb') return FileResponse(file)

Результат выполнения кода:

"File sent successfully"

Пример

Давайте отправим файл для скачивания с указанием имени:

from django.http import FileResponse from django.shortcuts import render def download_document(request): file_path = 'media/documents/report.pdf' file = open(file_path, 'rb') return FileResponse(file, as_attachment=True, filename='report_2026.pdf')

Результат выполнения кода:

"Document downloaded"

Пример

Давайте используем FileResponse для отдачи файла из модели с полем FileField:

from django.http import FileResponse from django.shortcuts import get_object_or_404 from .models import Document def download_document(request, doc_id): doc = get_object_or_404(Document, id=doc_id) return FileResponse(doc.file.open(), as_attachment=True, filename=doc.file.name)

Результат выполнения кода:

"File sent"

Пример

Давайте создадим представление для отдачи файла с пользовательским типом содержимого:

from django.http import FileResponse from django.shortcuts import render def download_video(request): file_path = 'media/videos/tutorial.mp4' file = open(file_path, 'rb') response = FileResponse(file, content_type='video/mp4') response['Content-Disposition'] = 'inline; filename="tutorial.mp4"' return response

Результат выполнения кода:

"Video streamed"

Смотрите также

  • класс HttpResponse,
    который представляет стандартный HTTP-ответ
  • класс JsonResponse,
    который возвращает данные в формате JSON
  • класс StreamingHttpResponse,
    который используется для потоковой передачи данных
  • класс HttpResponseRedirect,
    который выполняет перенаправление на другой URL
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить