Je configure un projet Django qui utilisait le système de fichiers du serveur pour stocker les fichiers statiques des applications ( STATIC_ROOT
) et les fichiers téléchargés par l'utilisateur ( MEDIA_ROOT
).
Je dois maintenant héberger tout ce contenu sur S3 d'Amazon, j'ai donc créé un compartiment pour cela. En utilisant django-storages
le boto
backend de stockage, j'ai réussi à télécharger les statiques collectées dans le compartiment 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'
Ensuite, j'ai eu un problème: les MEDIA_ROOT
et STATIC_ROOT
ne sont pas utilisés dans le seau, donc la racine du seau contient à la fois les fichiers statiques et les chemins téléchargés par l'utilisateur.
Alors je pourrais définir:
S3_URL = 'http://s3.amazonaws.com/%s' % AWS_STORAGE_BUCKET_NAME
STATIC_URL = S3_URL + STATIC_ROOT
MEDIA_URL = 'S3_URL + MEDIA_ROOT
Et utilisez ces paramètres dans les modèles, mais il n'y a pas de distinction entre les fichiers statiques / multimédias lors du stockage dans S3 avec django-storages
.
Comment cela peut-il être fait?
Merci!
AWS_STORAGE_BUCKET_NAME
), et c'est celui utilisé lorsqu'une instance de la classe spécifiée dansSTATICFILES_STORAGE
est instanciée.