Не думаю, что данный топик должен стать откровением для продвинутых Django-кодеров. Но по опыту работы в разных проектах, могу сказать, что многие программисты всёже не в теме.
Итак, любой проект (практически) требует раздельную конфигурацию для девелоперской машины и продакшн сервера. Можно просто сделать два файла конфигурации, но иногда требуется вписать и изменить общие для каждой конфигурации настройки.
Некоторые вставляют кучу if-ов или ещё чего по хуже, опираясь на ip (ужос) или имя машины, но это всё крайне неудобно и захламляет конфигурацию. Для меня это очень сильный довод к неучастию в проекте, т.к. это говорит о качестве всего кода.
В Django сообществе уже приняты негласные стандарты, основанные на опыте многих: создание отдельного файла конфигурации local_settings.py и включение его в конце основной конфигурации, таким образом перезаписывая значения нужных параметров.
Думаю, лучше продемонстрировать.
settings.py
Далее создаём local_settings.py и пишем:
Сразу добавляем local_settings.py в svn:ignore, дабы не ипаться с этим в дальнейшем.
Всё готово. Загружаем проект в svn, делаем на продакшене svn co /var/svn (ну или как у кого). Теперь без особого гемора можно развернуть версию из SVN, при этом у разработчика остаётся достаточное пространство для манёвра в локальной конфигурации.
Это просто, но крайне удобно. Пользуйтесь кто ещё не знал.
Итак, любой проект (практически) требует раздельную конфигурацию для девелоперской машины и продакшн сервера. Можно просто сделать два файла конфигурации, но иногда требуется вписать и изменить общие для каждой конфигурации настройки.
Некоторые вставляют кучу if-ов или ещё чего по хуже, опираясь на ip (ужос) или имя машины, но это всё крайне неудобно и захламляет конфигурацию. Для меня это очень сильный довод к неучастию в проекте, т.к. это говорит о качестве всего кода.
В Django сообществе уже приняты негласные стандарты, основанные на опыте многих: создание отдельного файла конфигурации local_settings.py и включение его в конце основной конфигурации, таким образом перезаписывая значения нужных параметров.
Думаю, лучше продемонстрировать.
settings.py
# Конфигурация продакшн сервера (БД)
DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_NAME = 'professors'
DATABASE_USER = 'root'
DATABASE_PASSWORD = 'blabla'
DATABASE_HOST = 'localhost'
DATABASE_PORT = ''
# Тут всякая прочая бредятина
# ...
# А вот тут включаем
try:
from local_settings import *
except ImportError:
pass
Далее создаём local_settings.py и пишем:
DATABASE_ENGINE = 'postgresql_psycopg2'
DATABASE_NAME = 'professors_v2'
DATABASE_USER = 'developer'
DATABASE_PASSWORD = 'blabla2'
Сразу добавляем local_settings.py в svn:ignore, дабы не ипаться с этим в дальнейшем.
Всё готово. Загружаем проект в svn, делаем на продакшене svn co /var/svn (ну или как у кого). Теперь без особого гемора можно развернуть версию из SVN, при этом у разработчика остаётся достаточное пространство для манёвра в локальной конфигурации.
Это просто, но крайне удобно. Пользуйтесь кто ещё не знал.