2013-05-08 1 views
0

У меня есть файл settings.py, содержащий основные настройки. Затем у меня есть файл local_settings.py, который содержит некоторые профилирующие и тестирующие приложения как django_debug_toolbar и т. Д., А затем у меня есть другой файл production_settings.py, который содержит настройки db и т. Д. Для производства.django другой файл production_settings

Я добавил файл local_settings.py в свой .gitignore, чтобы он не попадал в производство. И в моем файле settings.py я поставил следующее:

try: 
    from local_settings import * 
    INSTALLED_APPS += LS_APPS 
    MIDDLEWARE_CLASSES += LS_MIDDLEWARE_CLASSES 
except ImportError: 
    try: 
     from production_settings import * 
     INSTALLED_APPS += PROD_APPS 
    except: 
     pass 

Я запускаю вещи на героику. Проблема в том, что настройки в production_settings не отражаются на производственном сервере, что не так? Пожалуйста, помогите, спасибо!

ответ

0

На рабочем сервере local_settings не существует, поэтому импорт не удался. Но когда вы пытаетесь импортировать из production_settings, вы просто игнорируете исключение, если оно поднято. Не используйте try и except при импорте с production_settings. Интересно, возникает ли какое-то исключение, и поэтому эти изменения не отражаются. Например, одно исключение, о котором я думал, это то, что может быть INSTALLED_APPS является кортежем в settings.py, но PROD_APPS - это список (или наоборот), так что объединение кортежей со списком поднимет TypeError.

Лучший способ:

try: 
    from local_settings import * 
    INSTALLED_APPS += LS_APPS 
    MIDDLEWARE_CLASSES += LS_MIDDLEWARE_CLASSES 
except ImportError: 
    from production_settings import * 
    INSTALLED_APPS += PROD_APPS