我正在使用 django-storage 通过 Amazon S3 提供文件。 这意味着当我执行 ./manage.pycollectstatic 时,文件将保存在我在亚马逊的存储桶上,而不是保存在本地文件系统上。
要压缩我执行的文件:“./manage.py compress” 这给出了这个错误:
错误:渲染时发生错误:[Errno 2]没有这样的文件或目录:u'/home/user/project/static/less/bootstrap.less'
因为该文件不在我的本地文件系统上。
“由于 Django Compressor 处理文件的方式,它要求要处理的文件(在 {% compress %} 块中)在本地文件系统缓存中可用。” http://django_compressor.readthedocs.org/en/latest/remote-storages/
如何使 django-compress 与 django-storage (amazon s3) 一起使用?
在本地和 S3 上收集静态保存文件。由于 django-compressor 页面的文档中提到了这一点,所以应该有一些好的方法来做到这一点。怎么办?
STATIC_URL = 'http://mybucket.s3-website-eu-west-1.amazonaws.com/'
STATIC_ROOT = os.path.join(PROJECT_DIR,"static/")
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'compressor.finders.CompressorFinder',
)
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE = 'index.storage.CachedS3BotoStorage' #defined as it is in the documentation
AWS_ACCESS_KEY_ID = "xxx"
AWS_SECRET_ACCESS_KEY = "xxx"
AWS_STORAGE_BUCKET_NAME = "xxxx"
COMPRESS_URL = STATIC_URL
COMPRESS_OFFLINE = True
COMPRESS_PRECOMPILERS = (
('text/less', 'lessc {infile} {outfile}'),
)
我认为您唯一缺少的设置是
COMPRESS_ROOT
。
我的 django-compressor 与 S3 配合得很好。这是我的配置:
DEFAULT_FILE_STORAGE = 'g2k_utils.s3storage.S3BotoStorage'
STATICFILES_STORAGE = DEFAULT_FILE_STORAGE
COMPRESS_ROOT = '/home/user/website/static/' # Where my SCSS, JS files are stored
COMPRESS_STORAGE = DEFAULT_FILE_STORAGE
COMPRESS_OFFLINE = True
尝试添加
AWS_S3_CUSTOM_DOMAIN