Django 中的应用程序级别设置
Posted
技术标签:
【中文标题】Django 中的应用程序级别设置【英文标题】:App level settings in Django 【发布时间】:2015-05-31 00:43:54 【问题描述】:在 Django 中包含应用程序级设置的约定是什么?例如我正在编写一个 Django 应用程序,该应用程序具有一个视图,该视图可以对另一个 Web 服务进行 API 调用,获取其响应,对其进行修改并将其返回。现在,我想要一个设置变量来保存这个 API URL 的值(并且取决于 Django Web 服务器是否在 stage/dev/prod 中运行,API URL 会有所不同)。我应该在 app 目录中创建一个settings.py
吗?或者修改项目的settings.py
?如果我稍后再做,那么应用程序将不再保持可插拔/便携。可以吗?
请提供您回复的理由(即请解释为什么将设置包含在全局 settings.py
中可能是个好主意,即使它会降低应用程序的可移植性)。
谢谢。
【问题讨论】:
【参考方案1】:创建一个全局settings.py
,并在应用文档中指定需要哪些设置。你不应该制作特定于应用程序的settings.py
文件,除非它们有一些不相关的内部使用。您可能想使用 getattr(settings, 'SOME_SETTING_NAME', 'default value')
之类的东西来获取具有默认值的选项。
如果您想对 prod/staging/dev 进行单独设置,那么您需要创建一个 settings/
文件夹,其中包含一个基于 ENV
变量导入的 __init__.py
文件。
【讨论】:
以上是关于Django 中的应用程序级别设置的主要内容,如果未能解决你的问题,请参考以下文章
Django:如何将日志级别设置为 INFO 或 DEBUG
重写 url 以在组合 django/wordpress 设置中删除一个目录级别