Django Storages

django-storages предоставляет backends для хранения файлов в различных облачных сервисах.

Установка

1# Установка пакета
2pip install django-storages boto3
1# Или через Poetry
2poetry add django-storages boto3

Настройка для Amazon S3

 1# settings.py
 2INSTALLED_APPS = [
 3    'storages',
 4]
 5
 6# AWS настройки
 7AWS_ACCESS_KEY_ID = 'your-access-key'
 8AWS_SECRET_ACCESS_KEY = 'your-secret-key'
 9AWS_STORAGE_BUCKET_NAME = 'your-bucket-name'
10AWS_S3_REGION_NAME = 'us-east-1'
11
12# Статические файлы
13STATICFILES_STORAGE = 'storages.backends.s3boto3.StaticS3Boto3Storage'
14DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.MediaS3Boto3Storage'

Кастомные storage классы

 1from storages.backends.s3boto3 import S3Boto3Storage
 2
 3class StaticStorage(S3Boto3Storage):
 4    location = 'static'
 5    default_acl = 'public-read'
 6
 7class MediaStorage(S3Boto3Storage):
 8    location = 'media'
 9    file_overwrite = False
10
11# В настройках
12STATICFILES_STORAGE = 'myapp.storage.StaticStorage'
13DEFAULT_FILE_STORAGE = 'myapp.storage.MediaStorage'

Настройка для Google Cloud Storage

 1# Установка
 2pip install django-storages[google]
 3
 4# Настройки
 5GS_BUCKET_NAME = 'your-bucket-name'
 6GS_CREDENTIALS = service_account.Credentials.from_service_account_file(
 7    'path/to/service-account.json'
 8)
 9
10DEFAULT_FILE_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'
11STATICFILES_STORAGE = 'storages.backends.gcloud.GoogleCloudStorage'

FAQ

Q: Как настроить CDN?
A: Используй AWS_S3_CUSTOM_DOMAIN для CloudFront.

Q: Можно ли использовать локальное хранилище?
A: Да, создай кастомный storage класс для локального хранения.