这是我想要实现的一个例子。期望的效果是,当且仅当定义了其相关设置时,特定特征才应生效。否则,应禁用该功能。
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中是否定义了设置变量。
提前致谢!
答案 0 :(得分:57)
您似乎已经采用了正确的方法:导入设置模块并检查。
你可以尝试使用:
if hasattr(settings, 'ANOTHER_VARIABLE'):
而不是:
if settings.is_defined('ANOTHER_VARIABLE'):
我找到了the documentation,希望这可能有所帮助。