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 ORM 中的每个事务隔离级别

Django:如何将日志级别设置为 INFO 或 DEBUG

重写 url 以在组合 django/wordpress 设置中删除一个目录级别

关于django出现重复点击,多事务处理

Django 1.10中文文档-第一个应用Part2-模型和管理站点

Android OSM 机器人 - 设置最大缩放级别