Как заставить django-storage и django-pipe работать вместе

Я хочу использовать и django-pipe, и django-storage на heroku для личного приложения. Использование только django-pipe работает отлично, использование только django-storage работает как чудо, но мне не удается заставить их обоих работать вместе:(

Когда вы читаете документы, вы обнаружите, что оба работают с collecstatic:

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; когда я установил хранилище для Amazon S3; django-pipe не создает 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, статические файлы отправляются на amazon S3, но django-pipe 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'
)

1 ответ

Настроить STATICFILES_STORAGE к: s3storage.S3PipelineStorage,

использование settings.AWS_STORAGE_BUCKET_NAME а также settings.AWS_LOCATION настроить S3.

Другие вопросы по тегам