Как установить настройки 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", "")
Вернуться на верх