Django settings.py: отдельная локальная и глобальная конфигурация - PullRequest
5 голосов
/ 07 апреля 2011

Мне было интересно, можно ли отделить "локальную" конфигурацию в Django (локальный путь к статическому, содержимое шаблонов, которое должно быть абсолютным, информацию о локальной БД и т. Д ...) от "глобальной" конфигурации (URL) , Классы промежуточного программного обеспечения, установленные приложения и т. Д.), Чтобы несколько человек могли работать над одним проектом через Git или SVN без необходимости переписывать локальные настройки каждый раз, когда выполняется фиксация!

Спасибо!

Ответы [ 2 ]

13 голосов
/ 07 апреля 2011

Да, определенно.Файл settings.py - это всего лишь Python, так что вы можете делать там все, включая динамическую настройку и импорт других файлов для переопределения.

Итак, здесь есть два подхода.Во-первых, не нужно жестко кодировать любые пути, а вычислять их динамически.

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
TEMPLATE_DIRS = [
    os.path.join(PROJECT_ROOT, "templates"),
]

и т. Д.Волшебное ключевое слово Python __file__ дает путь к текущему файлу.

Вторым является файл local_settings.py вне SVN, который импортируется на конце основногоsettings.py и переопределяет любые настройки там:

try:
    from local_settings import *
except ImportError:
    pass

Попробуйте / исключите, чтобы убедиться, что он все еще работает, даже если local_settings не присутствует.

Естественно, вы можете попробовать комбинациюэти подходы.

0 голосов
/ 07 апреля 2011

Вы можете разбить свою конфигурацию на разные файлы.Поскольку они написаны на python, вы просто импортируете настройки из другого файла настроек, используя import local_settings, вы даже можете поставить импорт в условный импорт локальных настроек в зависимости от некоторого контекста.

Посмотрите надокументация: http://docs.djangoproject.com/en/dev/topics/settings/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...