我一起使用django-storage和sorl_thumbnail,我使用Amazon S3作爲靜態和媒體文件。我使用一個存儲桶和兩個文件夾,其中1個用於靜態,1個用於存儲媒體。django-storages + sorl_thumbnail + S3在一起工作不正常(URLs不匹配)
這裏是我的配置:
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
和StaticRootS3BotoStorage
被這樣定義:
StaticRootS3BotoStorage = lambda: S3BotoStorage(location='static')
MediaRootS3BotoStorage = lambda: S3BotoStorage(location='media')
當我使用sorl_thumbnail,生成位於正確的目錄縮略圖:https://s3.amazonaws.com/my-bucket/media/cache
但是當sorl_thumbnail正試圖檢索已經存在的縮略圖,生成的URL爲:https://s3.amazonaws.com/my-bucket/cache
,您會注意到media
文件夾被省略。
你有什麼想法我可以解決這個問題嗎?
我知道我可以只使用Django的存儲器,並有我的靜態和媒體文件都在我的桶混了,但是這是我的口味:)
謝謝你有點太骯髒!
上面每個'__init __()'方法的'super()'方法都調用錯誤的類。 他們應該是: '超(StaticRootS3BotoStorage,個體經營).__的init __(* ARGS,** kwargs)' 和 '超(MediaRootS3BotoStorage,個體經營).__的init __(* ARGS,** kwargs)' – niceguydave