Файл конфигурации django, как настроить пути на основе разработки или производственной среды - PullRequest
1 голос
/ 07 апреля 2011

Как настроить мои settings.py для использования различных STATIC_ROOT и STATIC_URL в зависимости от того, нахожусь ли я в среде разработки или в производственной среде?

Ответы [ 2 ]

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

Есть несколько способов сделать это, самый простой - импортировать еще один файл (обычно local_settings.py) и переопределить основные настройки (производственные настройки находятся в основных settings.py, локальные изменения в local_settings.py)

Код:

try:
    from local_settings import *
except ImportError:
    pass

другой вариант - сохранить несколько отдельных файлов конфигурации, таких как settings_prod.py, settings_dev.py и т. Д., Каждый из которых имеет свой собственный набор параметров конфигурации, но это кошмар для синхронизации. однако перемещение частей настроек в отдельные файлы (например, conf/db.py, conf/app_data.py, conf/locale.py, conf/logging.py (и т. д.) и последующий импорт их в файлы настроек очень помогают. эти настройки используются путем указания опции -s или --settings с именем модуля в качестве параметра (без части .py).

Я видел расширение второго варианта, этот набор настроек выбирался автоматически в зависимости от переменных среды / пути / имени машины. таким образом, был один settings.py с кодом для выбора настроек для загрузки. эта опция хороша, поэтому вам не нужно указывать -s все время.

последний, но не менее важный - использовать django-admin.py вместо manage.py. Разница между этими двумя файлами заключается в том, что manage.py устанавливает переменную окружения DJANGO_SETTINGS_MODULE для конкретного проекта. но если у вас будет, например, virtualenv для вашей разработки, вы можете установить локальный DJANGO_SETTINGS_MODULE, чтобы он указывал на правильный файл настроек, а затем использовать django-admin.py без необходимости указывать config.

переключение между проектами тоже должно быть легким.

Я уверен, что есть еще несколько вариантов, но, по крайней мере, вы можете видеть, что там есть:)

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

Обычно у меня есть два файла settings.py, local_settings.py и settings.py, local_settings.py предназначен для установки переменных, которые должны быть локальными для среды. Обычно сюда входят дБ, пути, настройки отладки. Этот файл никогда не помещается в систему контроля версий. Существует файл local_settings.py.tmpl, в котором хранятся параметры, которые необходимо установить.

Тогда в settings.py у меня есть from local_settings import * Обратите внимание, что файл settings.py нужно будет отрегулировать, если вы используете INSTALLED_APPS или любой из параметров на основе кортежей в файле local_settings. Например, в settings.py измените значение INSTALLED_APPS = () на INSTALLED_APPS += ().

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