Django 设置:如何从应用程序的设置文件夹中访问变量

Posted

技术标签:

【中文标题】Django 设置:如何从应用程序的设置文件夹中访问变量【英文标题】:Django settings: How to access variables from the settings folder in an app 【发布时间】:2018-12-23 00:15:22 【问题描述】:

我有一个结构如下的 Django 项目:

--|src
  --project
  --|settings
     --__init__.py
     --production.py
     --local.py
  --|app1

在我的应用程序中,我导入了设置 (from django.conf import settings),然后当我按照教程进行操作时,他们说要这样做 getattr(settings, VARIABLE)。这对我不起作用。相反,我可以这样做:settings.VARIABLE。有什么区别?

哦,我跑了type(settings),它输出了<class 'django.conf.LazySettings'>

【问题讨论】:

【参考方案1】:

项目目录 --|应用程序目录 --|settings.py

from app.settings import API_KEY

【讨论】:

【参考方案2】:

不同之处在于,由于各种原因(详见documentation),除非从中引用了对象,否则不会加载设置对象。

LazySettings 对象很特殊,您必须使用settings.SOMETHING 访问它。

之所以称为“Lazy”,是因为当您导入它时,整个对象并未加载并可供您使用。这个LazySettings 对象就像实际设置对象的代理。

【讨论】:

这回答了问题。【参考方案3】:

为了访问 settings.py 文件中的变量,您可以这样做:

例如,我在 settings.py 文件中定义了 STATIC_ROOT 变量,如下所示:

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(os.path.dirname(BASE_DIR), 'static', 'static_root')

我可以像这样访问这个变量:

from django.conf import settings
document_root=settings.STATIC_ROOT

【讨论】:

我不明白这是怎么被接受的答案。您只是确认了他在问题中所说的话,没有解释为什么会有差异!

以上是关于Django 设置:如何从应用程序的设置文件夹中访问变量的主要内容,如果未能解决你的问题,请参考以下文章

从数据库动态设置 Django 设置变量

如何从 css django 1.11.x 中的模型设置图像?

redux saga 选择器,如何从 saga 访问状态?

无法从 django 的设置文件中获取设置

如何从 django 中的 manage.py 调用不同的设置

Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)