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

Posted

技术标签:

【中文标题】Django:检查是不是设置了设置变量【英文标题】:Django: Check if settings variable is setDjango:检查是否设置了设置变量 【发布时间】:2014-09-15 09:44:43 【问题描述】:

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

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。我宁愿选择一个空值来表示该功能的排除。 - 但是如果尝试/排除它确实是首选方法,如果提供了详尽的来源或解释,我会将答案标记为正确。事实上,这适用于任何答案。

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

提前致谢!

【问题讨论】:

为什么这是 Django 特有的?我相信有一个内置的 Python 方法可以让你这样做 我认为“设置”对象是 Django 独有的。我不认为你可以教育我如何在 Python 中做到这一点? :) 【参考方案1】:

看来你的方法是正确的:导入设置对象并检查。

你可以尝试使用:

if hasattr(settings, 'ANOTHER_VARIABLE'):

代替:

if settings.is_defined('ANOTHER_VARIABLE'):

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

【讨论】:

来自文档:"Note that django.conf.settings isn’t a module – it’s an object."。

以上是关于Django:检查是不是设置了设置变量的主要内容,如果未能解决你的问题,请参考以下文章

Bash条件表达式(-v)检查是不是设置了变量[重复]

检查变量是不是设置在全局范围内?

检查是不是从 MySQL 触发器中的 SELECT INTO 设置了变量

如何检查变量是不是未设置并在我的 bash 前奏中使用 set -u? [复制]

在 Django 中从外键设置会话变量:需要字段名而不是主键

检查环境变量是不是存在并设置为 True [关闭]