如何从全局设置模块中设置Django中的特定设置

时间:2012-09-09 08:04:48

标签: python django module settings

我们正在尝试确定为我们想要使用的不同环境设置Django设置的最佳实践,例如本地开发,登台和制作。

阅读时,我们发现了两个主要的技术

  1. 在主settings.py文件末尾导入的settings_local.py文件(未版本化)

  2. 设置模块方式,其中设置变为python模块,其中包含特定的env.py文件source here

  3. 我们更喜欢第二种方式,因为它看似非常模块化和“python”方式,但是,作为指南仍然不完整,怎么说Django哪个模块用于每个不同的环境?

    您认为这是管理Django设置的好方法吗?

    谢谢大家。

1 个答案:

答案 0 :(得分:0)

使用这两种方法也是正常的。例如,您可以在每台开发人员计算机上拥有不同的环境,例如“开发”,“暂存”,“生产”和仅本地设置。

通常,settings_local.py刚刚从当前目录(或用于配置文件的特殊目录)的settings.py末尾导入。

为了管理不同的环境,我们使用env个变量。它看起来像这样:

$ export MY_PROJECT_ENV=production
$ python
>>> import os
>>> os.environ["MY_PROJECT_ENV"]
'production'

settings.py中,这看起来像

ENV = os.environ.get("MY_PROJECT_ENV", "production")
LOGGING_LEVEL = "debug" if ENV == "development" else "error"

对于使用export的更方便的操作,您可以将所有此类导出添加到~/.profile(或类似的功能文件)。