我正在尝试设置django-compressor和django-staticfiles,以便从 Amazon 的 S3 提供压缩的 CSS/Javascript 和图像。
我已经设法使用 S3 作为后端来设置静态文件,因此它的collectstatic
命令将文件发送到 S3 而不是STATIC_ROOT
.
然而,当试图添加django-compressor
到混合中时,这对我来说似乎一切都崩溃了。按照有关设置远程存储的文档,我创建了存储后端的子类boto ,因此我将示例复制到storage.py
. 一旦我开始使用这个缓存的后端,文件就会被复制到 static_media 而不是 S3。在第一页加载后,CACHE 文件夹出现在 S3 和 static_media 文件夹中。
设置STATICFILES_STORAGE
并COMPRESS_STORAGE
返回到 boto 的普通 S3 类 ( storages.backends.s3boto.S3BotoStorage
) 会导致静态资产被收集到 S3 存储桶中,并且没有 static_media 文件夹。但是尝试重新加载页面会引发错误:
Caught NotImplementedError while rendering: This backend doesn't support absolute paths.
突出显示{% compress css %}
为标签和compressor/base.py
原点。
我的 s3/staticfiles/compressor 部分settings.py
:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto.S3BotoStorage'
AWS_ACCESS_KEY_ID = 'key'
AWS_SECRET_ACCESS_KEY ='secret'
AWS_STORAGE_BUCKET_NAME = 'my-bucket'
S3_URL = 'http://my-bucket.s3.amazonaws.com/'
MEDIA_ROOT = 'client_media'
MEDIA_URL = '/media/'
STATIC_ROOT = 'static_media'
STATIC_URL = S3_URL
ADMIN_MEDIA_PREFIX = S3_URL + 'admin/'
STATICFILES_DIRS = (
join(DIRNAME, 'static'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
COMPRESS_ENABLED = True
COMPRESS_URL = S3_URL
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = 'storage.CachedS3BotoStorage'
STATICFILES_STORAGE = COMPRESS_STORAGE
那么我哪里错了?CachedS3BotoStorage
使用自定义存储时我是否配置错误?