在Django中包含应用程序级别设置的约定是什么?例如,我正在编写一个Django应用程序,该应用程序的视图可以对另一个Web服务进行API调用,获取其响应,修改并返回。现在,我想要一个设置变量来保存这个API URL的值(根据Django web服务器是否在stage/dev/prod中运行,API URL会有所不同)。我应该在应用程序目录中创建settings.py
吗?或者修改项目的settings.py
?如果我以后这样做,那个么应用程序将不再是可插拔/可移植的。这样可以吗?
请为您的回复提供理由(即,请解释为什么在全局settings.py
中包含该设置可能是个好主意,尽管它会降低应用程序的可移植性)。
谢谢。
制作一个全局settings.py
,并在应用程序文档中指定需要哪些设置。您不应该制作应用程序特定的settings.py
文件,除非它们有一些不相关的内部用途。您可能想要使用类似getattr(settings, 'SOME_SETTING_NAME', 'default value')
的东西来获取具有默认值的选项。
如果您想对prod/staging/dev进行单独的设置,那么您需要创建一个settings/
文件夹,其中包含一个基于ENV
变量导入的__init__.py
文件。