Я следую подходу, описанному в Two Scoops of Django: Best Practices for 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 каждый раз, когда я открываю консоль. Я прочитал здесь, что я могу определить хук постактивации в virtualenvwrapper. Затем этот хук создаст переменные среды, которые мне нужны каждый раз, когда я активирую среду.
Рекомендуется ли это для обеспечения загрузки правильной переменной окружения DJANGO_SETTINGS_MODULE на моем локальном компьютере? Нужно ли мне также устанавливать аналогичный файл на моем хостинг-сервере? Я планирую использовать PythonAnywhere для хостинга.
Наконец, если я запускаю промежуточный сервер, как мне указать Django загрузить файл промежуточных настроек? Промежуточный сервер практически такой же, как и рабочий сервер, поэтому, я думаю, нужен другой wsgi.py. файл для промежуточного сервера, но это похоже на анти-шаблон.