Django: Как обслуживать мультимедиа для аутентифицированных пользователей из частных пространств цифрового океана?
Я создал частное пространство на DigitalOcean и могу успешно загружать на него файлы изображений с помощью django-storages, согласно методу подклассификации S3Boto3Storage показанному здесь Витором Фрейтасом. Я опущу все настройки S3 из settings.py, если только кто-нибудь не попросит об этом.
Большинство документации, которую я нашел, похоже, сосредоточено на генерации временных ссылок общего доступа к файлам с помощью предварительно подписанных ссылок, что не является обязательным требованием для меня и порождает больше вопросов, чем ответов. Должны ли все предварительно подписанные ссылки истекать? Чтобы показать медиа в частном пространстве в моем шаблоне, нужно ли мне генерировать заранее подписанные урлы через параметр поля django "upload_to=", с чем-то вроде:
def url_generator(instance, filename):
new_file_path = # using some pre-signed url generator function using boto3?
return new_file_path
class Photo(models.Model):
image_file = models.ImageField(storage=PrivateMediaStorage(), upload_to=url_generator)
def __str__(self):
return str(self.image_file.name)
... или это своего рода антипаттерн? Нужно ли генерировать предварительно подписанные урлы в моей логике представления?
def view_photo_grid(request):
images = Photo.objects.all()
for i in images:
# create some presigned url for each and render it to the template
return render (request, 'pages/gallery.html', {'images':images_with_url})
...или это вопрос написания пользовательской функции генератора url для использования в шаблоне, что-то вроде:
{% for image in images %}
{{image.image_file.get_custom_presigned_url}}
{% endfor %}
Спасибо за любой взгляд на проблему.