Je suis en train de configurer 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
).Comment configurer un projet Django avec django-storages et Amazon S3, mais avec des dossiers différents pour les fichiers statiques et les fichiers multimédias?
Je dois maintenant héberger tout ce contenu sur Amazon S3, j'ai donc créé un compartiment pour cela. En utilisant django-storages
avec le backend de stockage boto
, j'ai réussi à télécharger statics collectés sur le godet 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, je suis un problème: le MEDIA_ROOT
et STATIC_ROOT
ne sont pas utilisés dans le seau, de sorte que la racine du godet 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 utiliser ces paramètres dans les modèles, mais il n'y a pas de distinction de fichiers statiques/médias lors de l'enregistrement dans S3 avec django-storages
.
Comment cela peut-il être fait?
Merci!
Pourquoi ne pas avoir deux seaux? –
Parce qu'il existe un seul paramètre pour spécifier le nom du compartiment ('AWS_STORAGE_BUCKET_NAME'), et c'est celui utilisé lorsqu'une instance de la classe spécifiée dans' STATICFILES_STORAGE' est instanciée. –