Używam Django-Storages i Sorl_thumbnail razem i używam Amazon S3 dla plików statycznych i multimedialnych. Używam jednego wiadra z 2 folderami, 1 dla statycznego i 1 dla multimediów.django-storages + sorl_thumbnail + S3 nie działa dobrze razem (niedopasowanie adresów URL)
Oto mój 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
i StaticRootS3BotoStorage
są zdefiniowane następująco:
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media')
Kiedy używam sorl_thumbnail, miniatury generowane są umieszczone w odpowiednim katalogu: https://s3.amazonaws.com/my-bucket/media/cache
ale kiedy sorl_thumbnail próbuje odzyskać już istniejącą miniaturę, generowany URL to: https://s3.amazonaws.com/my-bucket/cache
, zauważysz, że folder media
został pominięty.
Czy masz pojęcie, jak mogę to naprawić?
wiem, może po prostu użyć Django magazyny i mają moje statyczne i plików multimedialnych wszystko pomieszane w moim wiadrze, ale to nieco zbyt brudny na mój gust :)
dziękuję!
Metody 'super()' dla każdej z powyższych metod '__init __()' wywołują niewłaściwe klasy. Powinny one być: 'Super (StaticRootS3BotoStorage, self) .__ startowych __ (* args, ** kwargs)' i 'Super (MediaRootS3BotoStorage, self) .__ startowych __ (* args, ** kwargs)' – niceguydave