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

Django settings: How to access variables from the settings folder in an app

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

为了访问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

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

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

它被称为 "Lazy" 的原因是因为当您导入它时,整个对象都没有加载并可供您使用。此 LazySettings 对象充当实际设置对象的代理。

投射你 --|应用你 --|settings.py <<< 你的变量 API_KEY = '28234-jns-23-23n'

from app.settings import API_KEY