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 thatdjango.conf.settings
isn’t a module – it’s an object."。以上是关于Django:检查是不是设置了设置变量的主要内容,如果未能解决你的问题,请参考以下文章
检查是不是从 MySQL 触发器中的 SELECT INTO 设置了变量
如何检查变量是不是未设置并在我的 bash 前奏中使用 set -u? [复制]