Django:检查是否设置了设置变量

时间:2014-07-24 00:59:31

标签: python django django-settings

这是我想要实现的一个例子。期望的效果是,当且仅当定义了其相关设置时,特定特征才应生效。否则,应禁用该功能。

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设置或特殊值(如空白字符串或无)来评估该功能是否生效。

我想做的最后一件事是使用try / except。我宁愿选择一个空值来表示该功能被排除在外。 - 但是如果尝试/除了它确实是首选方法,如果提供详尽的来源或解释,我会将答案标记为正确。事实上,这是任何答案。

简而言之,我需要以正确的方式检查Django中是否定义了设置变量。

提前致谢!

1 个答案:

答案 0 :(得分:57)

您似乎已经采用了正确的方法:导入设置模块并检查。

你可以尝试使用:

if hasattr(settings, 'ANOTHER_VARIABLE'):

而不是:

if settings.is_defined('ANOTHER_VARIABLE'):

我找到了the documentation,希望这可能有所帮助。