Я следую за подходом в Два совпадающих Django: лучшие практики для Django 1.6 относительно нескольких файлов настроек. Я использую Django 1.7 и virtualenvwrapper.Выбор правильного файла настроек для использования в Django
Моя установка выглядит следующим образом:
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 here:
Что меня смущает в файле wsgi.py есть строка:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings.production")
Является ли этот файл используется только в производственный сервер? Что произойдет, если у меня уже есть переменная окружения DJANGO_SETTINGS_MODULE, определенная на сервере?
При запуске локально я понимаю, что каждый раз, когда я открываю консоль, мне нужно установить переменную env DJANGO_SETTINGS_MODULE. Я прочитал here, что я могу определить крюк postactivate в virtualenvwrapper. Затем этот крючок создает переменные окружения, которые я требую каждый раз, когда я активирую среду.
Является ли это рекомендуемым способом обеспечения правильной переменной env DjANGO_SETTINGS_MODULE на моей локальной машине? Нужно ли мне также настроить аналогичный файл на моем сервере хостинга? Я планирую использовать PythonAnywhere для хостинга.
И, наконец, если я запустил промежуточный сервер, как я могу сказать Django загрузить файл настроек этапа? Промежуточный сервер практически такой же, как и на производственном сервере, поэтому я предполагаю, что для промежуточного сервера нужен другой файл wsgi.py, но это похоже на анти-шаблон.
Я определенно хочу, чтобы все файлы настроек в репо. И согласны ли вы с наилучшим подходом к установке переменной env для DJANGO_SETTINGS_MODULE локально, чтобы создать крюк postactivate в virtualenvwrapper? – Johan
Локально вам не нужно устанавливать переменную окружения, так как по умолчанию должны быть ваши локальные настройки. На рабочем сервере я рекомендую использовать комбинацию supervisor + gunicorn. Задайте переменную среды в скрипте, который запускает приложение, и вам больше не нужно его устанавливать. – Peter
Если переменная env DJANGO_SETTINGS_MODULE не установлена локально, как Django знает, какой файл настроек использовать? – Johan