Подтвердить что ты не робот

Django: проверьте, задана ли настройка переменной

Вот пример того, чего я пытаюсь достичь. Желаемый эффект заключается в том, что конкретная функция должна вступить в силу тогда и только тогда, когда определена ее соответствующая установка. В противном случае функция должна быть отключена.

settings.py:

SOME_VARIABLE = 'some-string'
ANOTHER_VARIABLE = 'another-string'

random_code_file.py:

from django.conf import settings

if settings.is_defined('ANOTHER_VARIABLE'): # <- I need this.
    do_something(settings.ANOTHER_VARIABLE)
else:
    do_something_completely_different()

В приведенном выше коде я пропускаю все, что я должен делать, а не settings.is_defined.

Если это неправильный подход к проблеме в целом, я был бы рад услышать и об альтернативных подходах. Желаемый эффект - это функция с автоактивностью, которая действует только в том случае, если существует соответствующая настройка. Я бы предпочел избегать специального параметра settings.ACTIVE_FEATURES или специального значения, такого как пустая строка или None, для функции, чтобы оценить, будет ли она вступать в силу или нет.

Последнее, что я хотел бы сделать, это использовать try/except. Я предпочел бы оставить пустое значение, указывающее на исключение этой функции. - Но если try/except-ing это действительно предпочтительный метод, я буду отмечать ответ как правильный, если будут предоставлены исчерпывающие источники или пояснения. На самом деле это отвечает за любой ответ.

Короче говоря, мне нужен правильный способ проверить, определена ли переменная параметров в Django.

Спасибо заранее!

4b9b3361

Ответ 1

Кажется, вы сделали правильный путь: установить модуль настроек и проверить.

И вы можете попробовать:

if hasattr(settings, 'ANOTHER_VARIABLE'):

вместо:

if settings.is_defined('ANOTHER_VARIABLE'):

Я искал документацию, надеюсь, что это может помочь:

https://docs.djangoproject.com/en/1.6/topics/settings/#using-settings-in-python-code

https://docs.djangoproject.com/en/1.9/topics/settings/#using-settings-in-python-code

https://docs.djangoproject.com/en/1.11/topics/settings/#using-settings-in-python-code