Django中的应用程序级别设置

时间:2015-03-26 20:14:25

标签: python django django-settings django-apps

在Django中包含应用级设置的惯例是什么?对于例如我正在编写一个Django应用程序,它有一个视图,可以对另一个Web服务进行API调用,获取响应,修改它并将其返回。现在,我想有一个设置变量来保存这个API URL的值(并且根据Django Web服务器是否在stage / dev / prod中运行,API URL会有所不同)。我应该在app目录中创建settings.py吗?或者修改项目settings.py?如果我以后再做,那么应用程序不再是可插拔的/可移植的。那可以吗?

请提供您回复的理由(即请解释为什么在全局settings.py中包含该设置可能是个好主意,即使它会降低应用的可移植性。)

感谢。

1 个答案:

答案 0 :(得分:4)

制作全局settings.py,并指定应用文档中需要哪些设置。您不应该制作特定于应用程序的settings.py文件,除非它们具有一些不相关的内部使用。您可能希望使用getattr(settings, 'SOME_SETTING_NAME', 'default value')之类的内容来获取默认选项。

如果您想为prod / staging / dev设置单独的设置,那么您需要创建一个settings/文件夹,其中包含基于__init__.py变量导入的ENV文件