Выбор правильного файла настроек для использования в Django
Я следую подходу в Две ложки Django: лучшие практики для Django 1.6 в отношении нескольких файлов настроек. Я использую Django 1.7 и virtualenvwrapper.
Моя настройка выглядит следующим образом:
project/
app1/
app2/
project/
__init__.py
settings/
__init__.py
base.py
local.py
production.py
manage.py
Я немного запутался в том, как Django знает, какой файл настроек использовать. Я не хочу указывать файл настроек при каждом запуске manage.py. я бы предпочел установить переменную среды DJANG_SETTINGS_MODULE, как описано в omouse anser здесь:
Что меня смущает, так это то, что wsgi.py файл есть строка:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings.production")
Используется ли этот файл только на рабочем сервере? Что произойдет, если у меня уже есть переменная среды DJANGO_SETTINGS_MODULE, определенная на сервере?
Когда я запускаю его локально, я понимаю, что мне нужно установить переменную DJANGO_SETTINGS_MODULE env каждый раз, когда я открываю консоль. Я прочитал здесь , что я могу определить postactivate крюк в virtualenvwrapper. Этот крюк затем создаст переменные среды, которые мне требуются каждый раз, когда я активирую окружающую среду.
Является ли это рекомендуемым способом обеспечения правильной загрузки переменной DJANGO_SETTINGS_MODULE env на моей локальной машине? Нужно ли мне также настроить подобный файл на моем хост-сервере? я планирую использовать PythonAnywhere для хостинга.
Наконец, если я запускаю промежуточный сервер, как я скажу Django загрузить файл промежуточных настроек? промежуточный сервер-это практически то же, что и на производственном сервере, так что, думаю, нужен другой wsgi.py файл для промежуточного сервера, но это похоже на анти-шаблон.
1 ответ:
os.environ.setdefault
задает значение только в том случае, если оно не задано. Когда вы работаете в рабочей среде, экспортируйте переменную средыDJANGO_SETTINGS_MODULE
и установите ее в файл параметров рабочей среды / промежуточной среды, и вам не нужно ничего устанавливать при запуске в разработке (если вы установили ее по умолчанию в параметры разработки). Это сухой-Есть способ.Метод с
local_settings.py
(который в большинстве случаев держится вне РЕПО!) не является лучшей практикой, и ее следует избегать.