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

时间:2018-07-15 03:39:10

标签: django django-settings django-apps

我有一个具有以下结构的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'>

3 个答案:

答案 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