Estoy usando django-storages y sorl_thumbnail juntos y estoy usando Amazon S3 para archivos estáticos y de medios. Estoy usando un cubo con 2 carpetas, 1 para estático y 1 para medios.django-storages + sorl_thumbnail + S3 no funciona bien en conjunto (las URL no coinciden)
Aquí es mi config:
MEDIA_ROOT = '/media/'
MEDIA_URL = 'https://s3.amazonaws.com/my-bucket/media/'
STATIC_ROOT = '/static/'
STATIC_URL = 'https://s3.amazonaws.com/my-bucket/static/'
AWS_STORAGE_BUCKET_NAME = 'my-bucket'
DEFAULT_FILE_STORAGE = 'my_lib.s3utils.MediaRootS3BotoStorage'
STATICFILES_STORAGE = 'my_lib.s3utils.StaticRootS3BotoStorage'
MediaRootS3BotoStorage
y StaticRootS3BotoStorage
se definen así:
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media')
Cuando utilizo sorl_thumbnail, las miniaturas generadas se encuentran en el directorio correcto: https://s3.amazonaws.com/my-bucket/media/cache
pero cuando sorl_thumbnail está tratando de recuperar una miniatura ya existente, la URL generada es: https://s3.amazonaws.com/my-bucket/cache
, notará que la carpeta media
se ha omitido.
¿Tiene alguna idea de cómo podría solucionarlo?
Sé que sólo pudiera utilizar Django almacenes y tienen mis archivos de medios estáticos y todo mezclado en mi cubo, pero eso es un poco demasiado sucia para mi gusto :)
Gracias!
Los métodos 'super()' en cada uno de los métodos '__init __()' anteriores están llamando a las clases incorrectas. Deben ser: 'super (StaticRootS3BotoStorage, auto) .__ init __ (* args, ** kwargs)' y 'super (MediaRootS3BotoStorage, auto) .__ init __ (* args, ** kwargs)' – niceguydave