Я настраиваю проект Django, который использовал файловую систему сервера для хранения статических файлов приложений (STATIC_ROOT
) и загруженных пользователем файлов (MEDIA_ROOT
).Как настроить проект Django с django-хранилищами и Amazon S3, но с разными папками для статических файлов и медиафайлов?
Мне нужно сейчас разместить весь контент на S3 Amazon, поэтому я создал для этого ведро. Использование django-storages
с внутренним интерфейсом хранения boto
, мне удалось загрузить собранную статику на S3 ведро:
MEDIA_ROOT = '/media/'
STATIC_ROOT = '/static/'
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'KEY_ID...'
AWS_SECRET_ACCESS_KEY = 'ACCESS_KEY...'
AWS_STORAGE_BUCKET_NAME = 'bucket-name'
STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
Затем я получил проблему: MEDIA_ROOT
и STATIC_ROOT
не используются в ведре, так что корень ведра содержит как статические файлы и загруженные пользователем пути.
Так тогда я мог бы установить:
S3_URL = 'http://s3.amazonaws.com/%s' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = S3_URL + STATIC_ROOT
MEDIA_URL = 'S3_URL + MEDIA_ROOT
И использовать эти параметры в шаблонах, но нет никакого различия статического/медиа-файлов при сохранении в S3 с django-storages
.
Как это можно сделать?
Спасибо!
Почему бы не иметь два ведра? –
Поскольку существует только одна настройка для указания имени ведра ('AWS_STORAGE_BUCKET_NAME'), и это тот, который используется, когда экземпляр класса, указанный в' STATICFILES_STORAGE', создается. –