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

Tee*_*kin 35 python django django-settings

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

settings.py:

SOME_VARIABLE = 'some-string'
ANOTHER_VARIABLE = 'another-string'
Run Code Online (Sandbox Code Playgroud)

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()
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我错过了我应该做的任何事情而不是settings.is_defined.

如果这是解决问题的错误方法,我也很乐意听到其他方法.所需效果是自动激活功能,仅在存在相关设置时才会生效.我宁愿避免一些特殊settings.ACTIVE_FEATURES设置或特殊值,如空白字符串或无,以评估功能是否生效.

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

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

提前致谢!

Alf*_*ang 61

看起来你已经做到了正确的方法:导入设置模块并检查.

你可以尝试使用:

if hasattr(settings, 'ANOTHER_VARIABLE'):

代替:

if settings.is_defined('ANOTHER_VARIABLE'):

我找到了文档,希望这可能会有所帮助.

  • 来自文档:[“请注意`django.conf.settings`不是一个模块 - 它是一个对象。”](https://docs.djangoproject.com/en/3.1/topics/settings/#using-settings -在Python代码中)。 (3认同)