无法从Django设置导入一些变量

时间:2019-07-08 13:12:23

标签: python django

我已将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是字符串类型的变量。

1 个答案:

答案 0 :(得分:1)

这确实是因为设置必须大写。在the settings documentation中指定:

  

没有什么可以阻止您为自己的Django应用创建自己的设置。只需遵循以下准则:

     
      
  • 设置名称必须全部大写。
  •   

在后台,这是因为django.conf.settings实际上不是模块,而是基于该模块动态创建的类; the code仅读取全部大写的变量。

(还要注意,从风格上讲,这是有道理的;按定义设置是常量,Python风格是将常量大写。)