#django
#django
Вопрос:
Как мне настроить мой settings.py использовать разные STATIC_ROOT и STATIC_URL в зависимости от того, находится ли im в среде разработки или производственной среде?
Ответ №1:
есть несколько способов сделать это, самый простой — импортировать еще один файл (обычно local_settings.py
) и переопределить основные настройки (производственные настройки находятся в main 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 для вашей разработки, вы можете настроить свой local DJANGO_SETTINGS_MODULE
так, чтобы он указывал на правильный файл настроек, а затем использовать django-admin.py
без необходимости указывать config.
переключение между проектами также должно быть простым.
я уверен, что есть еще несколько вариантов, но, по крайней мере, вы можете увидеть, что там есть 🙂
Ответ №2:
Обычно у меня есть два settings.py файлы, local_settings.py и settings.py , the local_settings.py заключается в установке переменных, которые должны быть локальными для среды. Обычно сюда входят база данных, пути, настройки отладки. Этот файл никогда не передается в систему управления версиями. Существует файл local_settings.py.tmpl, который содержит настройки, которые необходимо установить.
Затем в settings.py У меня есть from local_settings import *
примечание, настройки.py необходимо будет настроить, если вы используете INSTALLED_APPS или любые настройки на основе кортежей в файле local_settings. В настройках.например, измените py INSTALLED_APPS = ()
на INSTALLED_APPS = ()
.