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 设置:如何从应用程序的设置文件夹中访问变量的主要内容,如果未能解决你的问题,请参考以下文章
如何从 css django 1.11.x 中的模型设置图像?
如何从 django 中的 manage.py 调用不同的设置
Django 1.6 最佳实践: 如何设置django项目的设置(settings.py)和部署文件(requirements.txt)