конфигурационный файл django, как настроить пути на основе dev или производственной среды

#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 = () .