我已将DJANGO_SETTINGS_MODULE
设置为我的设置文件。
此设置文件的一些示例行如下:
TEST = {
'CLIENT': os.environ.get("CLIENT_NAME", "unknown"),
'ENVIRONMENT': os.environ.get("ENVIRONMENT", "unknown")
}
client = os.environ.get("CLIENT_NAME", "unknown")
environment = os.environ.get("ENVIRONMENT", "unknown")
然后我尝试使用
导入django设置。from django.conf import settings as django_settings
然后我可以在得到django_settings.TEST['CLIENT']
时打印django_settings.client
而不是'Settings' object has no attribute 'client'
的值
我想念什么?对我而言,唯一的区别是TEST是字典,而client是字符串类型的变量。
答案 0 :(得分:1)
这确实是因为设置必须大写。在the settings documentation中指定:
没有什么可以阻止您为自己的Django应用创建自己的设置。只需遵循以下准则:
- 设置名称必须全部大写。
在后台,这是因为django.conf.settings
实际上不是模块,而是基于该模块动态创建的类; the code仅读取全部大写的变量。
(还要注意,从风格上讲,这是有道理的;按定义设置是常量,Python风格是将常量大写。)