Как установить настройки Django из функции?
Есть ли способ установить настройки django из функции?
По сути, я хочу создать логические блоки, которые устанавливают различные настройки django (возможно, более одной за раз). Быстрый пример этого:
def set_log_settings(env):
if env == 'prod':
set_settings({'LOG_LEVEL': 'INFO', 'LOG__HANDLER': 'prodhandler'}
else:
set_settings({'LOG_LEVEL': 'DEBUG', 'LOG__HANDLER': 'devhandler'}
Я бы вызвал это вместо того, чтобы иметь в settings.py
:
if env == 'prod':
LOG_LEVEL='INFO'
LOG__HANDLER='prodhandler'
else:
LOG_LEVEL='DEBUG'
LOG__HANDLER'='devhandler'
Примечание: я хочу вызывать это из файла settings.py, а не из фактически загруженного кода приложения, это скорее вопрос группировки логики, связанной с настройками, а не вопрос того, когда эта логика запускается. Это позволит мне не иметь огромный файл настроек, в котором вся логика сидит практически неорганизованной на глобальном уровне.
Создайте файл типа "settings_functions.py" и импортируйте его внутрь "settings.py".
# settings_functions.py
def set_log_settings(env):
if env == 'prod':
return {'LOG_LEVEL': 'INFO', 'LOG__HANDLER': 'prodhandler'}
else:
return {'LOG_LEVEL': 'DEBUG', 'LOG__HANDLER': 'devhandler'}
# settings.py
from . import settings_functions
log_settings = settings_functions.set_log_settings(env)
LOG_LEVEL = log_settings.get("LOG_LEVEL", "")
LOG__HANDLER = log_settings.get("LOG__HANDLER", "")