Обслуживание медиафайлов в django с небольшим размером
Я создаю Django приложение (назовем его Drive) для загрузки фотографий (2MB или больше) и использования их ссылок в другом проекте. проблема заключается в том, что при загрузке всех фотографий на диск и добавлении их ссылок в другой проект фотографии требуют много времени для загрузки, я нашел решение для сервера этих фотографий на самом диске и сжимать их при загрузке, но все равно загрузка занимает много времени.
это функция подачи:
def serve(request, path, document_root=None):
file_link = path
file = File.objects.get(privacy__link=file_link)
rendered_file = FileResponse(file.file)
return rendered_file
он возвращает файл как FileResponse, а затем он будет возвращен в полном размере, и я думаю, что это проблема, и я не хочу, чтобы что-то подобное произошло, я просто хочу просматривать фотографии с маленькими размерами, чтобы они быстрее загружались на сайте.
любая помощь?
Если я правильно вас понял, вы хотите предоставить миниатюру вашего изображения в этом представлении. Это распространенный сценарий, и вы можете найти множество пакетов Django, поддерживающих это различными способами.
ImageKit
, например, представляет новый вид поля модели, которое автоматически генерирует новую версию существующего ImageField
. Затем вы можете просто обслужить автоматически сгенерированное изображение в вашем представлении.
Пример, взятый из документации ImageKit
:
from django.db import models
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToFill
class Profile(models.Model):
avatar = models.ImageField(upload_to='avatars')
avatar_thumbnail = ImageSpecField(source='avatar',
processors=[ResizeToFill(100, 50)],
format='JPEG',
options={'quality': 60})