使用 DJANGO_SETTINGS_MODULE 时如何导入设置?

Posted

技术标签:

【中文标题】使用 DJANGO_SETTINGS_MODULE 时如何导入设置?【英文标题】:How do I import settings when using DJANGO_SETTINGS_MODULE? 【发布时间】:2021-05-27 23:37:55 【问题描述】:

我有一个 Django 项目,并且正在使用 DJANGO_SETTINGS_MODULE 来管理每个环境设置。我为每个环境创建了不同的设置文件,但是,我很困惑如何在不更改代码中的导入的情况下访问这些设置。比如我有这个设置目录结构:

stats/
    config/
        settings/
            __init__
            base.py
            dev.py
            prod.py

base.py 拥有我所有的默认设置,包括一些用于第三方服务的 API 密钥。我在每个环境中覆盖这些:

base.py

API_KEY  = "default"

dev.py

from base import *
API_KEY = "dev"

prod.py

from base import *
API_KEY = "prod"

当我启动我的服务器时,我使用

./manage.py runserver --settings=stats.config.settings.dev

但是我如何访问API_KEY 而不必在每次部署时将“dev”更改为“prod”?这就是我目前在我的代码中访问API_KEY 的方式:

from stats.config.settings.dev import API_KEY

我似乎无法在任何地方找到正确的答案。谢谢!

【问题讨论】:

【参考方案1】:

You access your settings via django.conf.settings,你不应该直接导入/访问它们

from django.conf import settings
settings. API_KEY

【讨论】:

啊,我在设置不同环境的过程中读到了这一点,但并没有完全将两者联系起来。我测试了它并且它正在工作。谢谢!

以上是关于使用 DJANGO_SETTINGS_MODULE 时如何导入设置?的主要内容,如果未能解决你的问题,请参考以下文章

Django“未配置设置”错误,无法定义环境变量 DJANGO_SETTINGS_MODULE

在 virtualenv 下设置 DJANGO_SETTINGS_MODULE?

Djang DJANGO_SETTINGS_MODULE

DJANGO_SETTINGS_MODULE 未命名模块

DJANGO_SETTINGS_MODULE - 未加载指定的设置文件?

django.setup(): ModuleNotFoundError: 设置 DJANGO_SETTINGS_MODULE 时没有名为“api.apps”的模块