我有一个具有以下结构的djanog项目:
--|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'>
。
答案 0 :(得分:1)
为了访问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
答案 1 :(得分:1)
区别在于由于各种原因(有关详细信息,请参见documentation),除非加载了设置对象,否则不会加载设置对象。
LazySettings
对象很特殊,您必须使用settings.SOMETHING
访问它。
之所以将其称为“惰性”是因为导入时未加载整个对象并使该对象可用。这个LazySettings
对象的作用就像是实际设置对象的代理。
答案 2 :(得分:0)
项目DIR -| app DIR -| settings.py <<<您的变量API_KEY ='28234-jns-23-23n'
from app.settings import API_KEY