我已成功使用django-storages
将所有静态和媒体文件存储在Amazon S3上的Django中 - 但我也想同时将它们存储在服务器上。
因此,当我运行collectstatic
时,我希望它同步/static
文件夹和s3.domain.tld/static
文件夹。
我的设置如下:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'cupcard/static')]
STATICFILES_LOCATION = 'static'
STATIC_URL = "http://%s/%s/" % (AWS_S3_CUSTOM_DOMAIN, STATICFILES_LOCATION)
STATICFILES_STORAGE = 'lindshop.utils.custom_storages.CachedS3BotoStorage'
我当前的静态存储看起来像这样:
class CachedS3BotoStorage(S3BotoStorage):
location = settings.STATICFILES_LOCATION
def __init__(self, *args, **kwargs):
super(CachedS3BotoStorage, self).__init__(*args, **kwargs)
self.local_storage = get_storage_class(
"compressor.storage.CompressorFileStorage")()
def save(self, name, content):
non_gzipped_file_content = content.file
name = super(CachedS3BotoStorage, self).save(name, content)
content.file = non_gzipped_file_content
self.local_storage._save(name, content)
return name
当我运行python manage.py collectstatic
时,它只与S3同步。它不会将文件添加到本地/static
文件夹。