Опубликовано Оставить комментарий

Django storage and s3

Сталкиваясь в процессе разработки с необходимостью иметь несколько экземпляров веб-приложения, часто ощущается необходимость иметь статику и медиа файлы в одном месте. Самый легкий способ реализовать эту это возможность — это пользоваться облачным хранилищем, например, таким как s3 от amazon.

Предполагаю, что у вас уже есть аккаунт aws и вы знаете где найти настройки для s3. Буквально пару строк кода и ваши данные будут храниться во внешнем хранилище:

setting.py
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
AWS_ACCESS_KEY_ID = '...'
AWS_SECRET_ACCESS_KEY = '...'
AWS_STORAGE_BUCKET_NAME = '...'
AWS_QUERYSTRING_AUTH = Falsemodels.py

models.py
from django.core.files.storage import default_storage as s3_storage

class Model(models.Model):
    title = models.CharField(max_length=50)
    image = models.ImageField(storage=s3_storage, upload_to='dir/')

Значение FalseдляAWS_QUERYSTRING_AUTH удаляет параметры аутентификации из сгенерированного адреса. Это применимо когда у вас публичный S3.

Для того, чтобы вся статика хранилась там же, на s3, необходимо будет выполнить команду

python manage.py collectstatic

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *