1

我想在 heroku 上同时使用 django-pipeline 和 django-storage 作为个人应用程序。只使用 django-pipeline 效果很好,只使用 django-storage 就像一个魅力,但我无法让它们一起工作:(

当您阅读文档时,您会发现这可以使两者都与collectstatic一起使用:

Django管道:

settings.py
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE_CSS = {
'app': {
    'source_filenames': (
        'css/*',
    ),
    'output_filename': 'css/min.css',
    'variant': 'datauri',
},
}

Django-存储

settings.py
STATICFILES_STORAGE = 's3storages.StaticStorage'

s3storages.py
from storages.backends.s3boto import S3BotoStorage
StaticStorage = lambda: S3BotoStorage(
      bucket='app_name', 
      location='assets'
)

所以这两个应用程序都需要设置 STATICFILE_STORAGE; 当我为亚马逊 s3 设置存储时;django-pipeline 不会创建 min.css 和 min.js ......

所以我在堆栈上找到了这个解决方案并做了以下事情:

from staticfiles.storage import CachedFilesMixin
from pipeline.storage import PipelineMixin
from storages.backends.s3boto import S3BotoStorage

class S3PipelineStorage(PipelineMixin, CachedFilesMixin, S3BotoStorage):
pass

# Define bucket and folder for static files.
StaticStorage = lambda: S3BotoStorage(
      bucket='app_name', 
      location='assets'
)

现在,每次我使用 collectstatic 命令时,静态文件都会发送到亚马逊 S3,但 django-pipeline min.css 和 min.js 不会发送......在我的 STATIC_ROOT 目录中也没有它们的踪迹......

你知道我怎么能同时使用这两个吗?

编辑1:

现在我有了这个:(我改变了 s3storage :))

settings.py
STATICFILES_STORAGE = 's3storages.StaticStorage'

s3storage.py
from staticfiles.storage import CachedFilesMixin
from pipeline.storage import PipelineMixin
from storages.backends.s3boto import S3BotoStorage

class S3PipelineStorage(PipelineMixin, CachedFilesMixin, S3BotoStorage):
pass

# Define bucket and folder for static files.
StaticStorage = lambda: S3PipelineStorage(
      bucket='app_name', 
      location='assets'
)
4

1 回答 1

1

设置STATICFILES_STORAGE为:s3storage.S3PipelineStorage

使用settings.AWS_STORAGE_BUCKET_NAMEsettings.AWS_LOCATION配置 S3。

于 2013-05-10T18:13:29.197 回答