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

51 投票
1 回答
21597 浏览
提问于 2025-04-18 14:32

这里有一个我想要实现的例子。我的目标是某个特性只有在相关设置存在并被定义时才会生效。否则,这个特性就应该被禁用。

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 确实是更好的方法,如果能提供详细的来源或解释,我会把这个答案标记为正确。其实对任何答案都是如此。

总之,我需要在 Django 中检查一个设置变量是否被定义的正确方法。

提前谢谢你!

1 个回答

94

看起来你做得对:导入设置对象并进行检查。

你可以试试用:

if hasattr(settings, 'ANOTHER_VARIABLE'):

来代替:

if settings.is_defined('ANOTHER_VARIABLE'):

我找到了一些文档,希望这能帮到你。

撰写回答