【问题标题】:Heroku Config Vars and DjangoHeroku 配置变量和 Django
【发布时间】:2019-07-17 23:42:47
【问题描述】:

我想为每个环境(本地与暂存)进行特定设置。我在我的 heroku staging 应用程序中设置了 Config Vars 并将 DEBUG 设置设置为 false 以尝试它,但它不起作用。我错过了什么或做错了吗?

我的 seetings.py 文件

暂存应用程序中的配置变量

我试错了的结果

【问题讨论】:

  • Please don't post screenshots of text。它们无法被搜索或复制,并且可用性差。相反,将代码作为文本直接粘贴到您的问题中。如果选择它并单击{} 按钮或Ctrl+K,则代码块将缩进四个空格,这将导致其呈现为代码。

标签: django heroku


【解决方案1】:

您应该在当前settings.py 文件所在的位置创建一个目录,并将其命名为settings。然后在该目录下创建base.pydev.pyprod.py文件。

还要在与这 3 个设置文件相同的位置创建一个__init__.py,并在该__init__.py 中放置from your_project_name.settings.base import *。在 base.py 中,您将拥有 prod 和 dev 之间的所有共享设置,而在 prod.pydev.py 中,您只需 from .base import * 即可“继承”来自 base.py 文件的设置。这是唯一推荐这样导入的情况之一。

然后您可以在生产环境中设置DJANGO_SETTINGS_MODULE 环境变量以使用my_project_name.settings.prod 而不是默认设置变量。

【讨论】:

    【解决方案2】:

    设置文件中的DEBUG需要通过环境变量进行设置,如果有的话。

    所以将 DEBUG = True 更改为 DEBUG = os.environ.get('DEBUG', True) 应该没问题。这通常称为功能标志(模式)。


    回应:

    如果您使用“两勺”模式,@wjh18 就在正确的道路上。

    我概述的模式是可靠的,已经使用了多年。

    你能看到 python 终端通过heroku run bash --app APPNAME,然后是python,然后是import os,然后是os.environ.get('DEBUG'),在 Heroku 上抓取了什么。应该与您在 Heroku 上的设置相匹配。如果是这样,堆栈中可能存在阻止设置(延迟加载)正常工作的东西。

    Django 中存在的一些问题是你偏离了既定的模式。

    以防万一,环境变量仅适用于 Django 设置页面,否则通过正确导入设置 (from django.conf import settings) 访问 Django DEBUG

    【讨论】:

    • 还是同样的问题。我想要的是在我的本地 settings.py 文件中设置 DEBUG = True,在部署在 heroku 中的暂存或生产 settings.py 文件中设置 DEBUG = False。
    猜你喜欢
    • 2019-02-05
    • 1970-01-01
    • 2020-06-03
    • 2014-03-08
    • 2012-06-20
    • 2020-12-18
    • 1970-01-01
    • 2021-05-06
    • 2016-09-29
    相关资源
    最近更新 更多