python - 如何从全局设置模块在 Django 中设置特定设置

标签 python django module settings

我们正在尝试确定最佳实践,以便为我们想要使用的不同环境(例如本地开发、暂存和生产)设置 Django 设置。

四处阅读,我们发现使用了两个主要的技术:

  1. settings_local.py 文件,没有版本控制,在主 settings.py 文件的末尾导入

  2. settings 模块方式,settings 成为一个 python 模块,里面有特定的 env.py 文件 source here

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

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

谢谢大家

最佳答案

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

通常,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(或类似的功能文件)。

关于python - 如何从全局设置模块在 Django 中设置特定设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12337472/

相关文章:

javascript - 变量被意外覆盖

java - Java或Python中基于开源的规则引擎

python - Python 中的 Elif 条件

python - 有没有一种优雅的方法将 {% if .. %} 应用于 Django 中的整个标签负载?

Django 覆盖 auth_views.logout

python - 从该模块中查找模块的本地名称

python - 来自 pandas 数据帧行的具有分隔范围的 2D numpy 数组

python - 在 python3 中使用 PyGObject 中的线程和 GTK3

python - Django Admin,无法通过管理操作按钮将 user.is_active 设置为 FALSE(禁止)

Python 嵌套模块