一起使用 django-storages 和 django-compressor 时尝试压缩静态文件时出错
Posted
技术标签:
【中文标题】一起使用 django-storages 和 django-compressor 时尝试压缩静态文件时出错【英文标题】:Error when trying to compress static files when using django-storages and django-compressor together 【发布时间】:2013-05-13 11:58:23 【问题描述】:我已经设置了一个 AWS S3 存储桶,以便使用应用程序 django-storages 在远程 CDN 中传输我的静态文件, 一切正常,直到我尝试在使用 django_compressor 上传到 S3 之前压缩我的静态文件。
我已经根据 django-storages (https://django_compressor.readthedocs.org/en/latest/remote-storages/index.html) 的 django_compressor 文档设置了所有变量
然后我使用“manage.py collectstatic”上传了 S3 中的所有文件:
当我执行“manage.py compress”时,我收到此错误:
CommandError: An error occured during rendering ../templates/base.html: 'https://my_bucket.s3.amazonaws.com/css/bootstrap.2.3.1.css' isn't accessible via COMPRESS_URL ('https://my_bucket.s3-external-3.amazonaws.com/') and can't be compressed
我的设置有什么问题?
这是我对 django-storages 和 django_compressor 的 settings.py 配置:
COMPRESS_URL = 'https://mybucket_name.s3-external-3.amazonaws.com/'
STATIC_URL = COMPRESS_URL
DEFAULT_FILE_STORAGE = 'my_project.boto_custom.CachedS3BotoStorage'
AWS_ACCESS_KEY_ID = 'XXX'
AWS_SECRET_ACCESS_KEY = 'XXX'
AWS_STORAGE_BUCKET_NAME = 'mybucket_name'
COMPRESS_ROOT = STATIC_ROOT
COMPRESS_STORAGE = 'my_project.boto_custom.CachedS3BotoStorage'
STATICFILES_STORAGE = 'my_project.boto_custom.CachedS3BotoStorage'
COMPRESS_OFFLINE = True
感谢您的帮助
【问题讨论】:
【参考方案1】:我通过添加一个变量来修复它并且它起作用了:
AWS_S3_CUSTOM_DOMAIN = 'my_bucket.s3-external-3.amazonaws.com'
【讨论】:
【参考方案2】:如果您有单独的 S3 存储桶用于静态和媒体,您也可以将其放入您的 S3BotoStorage 子类中,如下所示:
class CachedS3BotoStorage(S3BotoStorage):
custom_domain = 'my_bucket.s3-external-3.amazonaws.com'
(或者最好将其设置为settings.AWS_S3_CUSTOM_STATIC_DOMAIN
或其他东西)
【讨论】:
以上是关于一起使用 django-storages 和 django-compressor 时尝试压缩静态文件时出错的主要内容,如果未能解决你的问题,请参考以下文章
Django-storages + boto + S3 collectstatic 的最小凭据
使用 azure 作为 Django 的存储后端(使用 django-storages)