2013-02-27 2 views
0

У меня есть base_settings.py установлен DEBUG = False, в конце моих настроек у меня есть следующий код:Использование S3 только в производстве Django

if not DEBUG: 
    AWS_STORAGE_BUCKET_NAME = 'bucket_name' 
    STATICFILES_STORAGE = 'storages.backends.s3boto.S3BotoStorage' 
    S3_URL = 'http://%s.s3.amazonaws.com/' % AWS_STORAGE_BUCKET_NAME 
    STATIC_URL = S3_URL 

В моем local_settings.py я задал DEBUG = True.

Мой INIT .py файл для модуля настройки:

from .base import * 

try: 
    from .local import * 
except ImportError: 
    pass 

По какой-то причине, при работе в местах, он все еще пытается вытащить статические файлы из S3, несмотря на мои, если не настройки DEBUG. Причина, о которой я думаю, заключается в том, что сначала он считывает базовый файл и тестирует DEBUG до того, как файл local_settings.py импортируется. Поэтому мой вопрос: как мне обойти это, поэтому s3-файлы используются только на производстве?

ответ

1

Предполагая, что у вас есть локальный пакет локально, попробуйте удалить попытку/исключение из-за импорта .local и посмотреть, не возникли ли какие-либо ошибки.

Кроме того, если вы устанавливаете DEBUG в качестве TRUE и устанавливаете свои URLS и хранилища, а затем устанавливаете DEBUG на false в .locals, вам нужно сбросить URLS и хранилища в .locals.

.locals импортируются ПОСЛЕ ваш базовый файл уже импортирован, так что ваша линия:

if not DEBUG: 

... расценивается как TRUE, при импорте, устанавливает все вплоть до использования S3.