Настройка носителя Django/Wagtail для использования S3

Я использую следующее руководство:

https://www.caktusgroup.com/blog/2014/11/10/Использование-Amazon-S3-to-store-your-Django-sites-static-and-media-files/

В разделе, в котором рассказывается, как «Настроить носитель Django для использования S3». Я использую это для трясогузки.

Я не понимаю, куда поместить настройки «custom_storages.py». Везде, где я ставлю, это не работает. Я пока вернулся к Whitenoise.

Спасибо!


person emTr0    schedule 05.04.2017    source источник
comment
Просто совет; Я следовал тому же учебнику, и он работает, однако проект django-storages активно не поддерживается. Я нашел баг и написал PR, но его не слили и не прокомментировали, а ведь уже несколько месяцев. Поскольку я использовал только S3 и не нуждался в других типах хранилищ, я переключился на использование django-s3-storage, что значительно упрощает работу и хорошо документировано. Вы можете найти его здесь: github.com/etianen/django-s3-storage   -  person FlipperPA    schedule 07.04.2017
comment
@FlipperPA Django-storages активно поддерживается, если вы посмотрите на историю коммитов, вы увидите обновления почти ежедневно.   -  person dentemm    schedule 07.04.2017
comment
@dentemm Справедливое замечание, я немного не зарегистрировался. Но этот PR — довольно серьезное исправление ошибки, которое уже некоторое время сидит: github.com /jschneier/django-storages/pull/233 Что касается трясогузки, это приводит к тому, что любые загруженные пользователем изображения/документы в трясогузку блокируются, поскольку вместо content_length следует использовать size.   -  person FlipperPA    schedule 08.04.2017


Ответы (2)


Вам нужно установить параметр STATICFILES_STORAGE

STATICFILES_STORAGE = 'path/to/custom_storages.StaticStorage'

Если вы используете трясогузку (что, как я предполагаю, вы и делаете, поскольку вы помечаете ею этот вопрос), вы можете поместить ее в каталог home/ по умолчанию и ссылаться на нее следующим образом: 'home/custom_storages. StaticStorage'

Содержимое custom_storages.py указано в руководстве, которому вы следуете:

# custom_storages.py
from django.conf import settings
from storages.backends.s3boto import S3BotoStorage

class StaticStorage(S3BotoStorage):
    location = settings.STATICFILES_LOCATION

Редактировать: у меня есть репозиторий GitHub (также проект трясогузки), в котором я использую этот код, но только для своих медиафайлов. Вы можете проверить это здесь.

person dentemm    schedule 07.04.2017
comment
Спасибо! Это помогло. - person emTr0; 10.04.2017

Вы можете поместить custom_storages.py в любом месте вашего пути к Python. Django попытается найти класс, используя значение параметра STATICFILES_STORAGE, которым в примере является «custom_storages.StaticStorage». Таким образом, Django фактически «импортирует custom_storages» и использует «custom_storages.StaticStorage» в качестве класса хранилища. Просто убедитесь, что вы можете «импортировать custom_storages», и это должно работать.

person Dan Poirier    schedule 05.04.2017
comment
Спасибо, но не могли бы вы быть немного более подробным/конкретным. Я учусь на ходу. - person emTr0; 06.04.2017
comment
Посмотрите, как Python находит импортированные файлы в вашем любимом справочнике по Python, и, надеюсь, все прояснится. - person Dan Poirier; 06.04.2017
comment
В целях настройки пути я должен переименовать файл, чтобы он не включал расширение .py? Итак, это /x/x/custom_storages. Я нашел это как руководство stackoverflow.com/questions/15109548 / - person emTr0; 06.04.2017