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