姜戈。在 Heroku 中使用多个设置文件

Posted

技术标签:

【中文标题】姜戈。在 Heroku 中使用多个设置文件【英文标题】:Django. Using multiple settings files with Heroku 【发布时间】:2014-07-27 02:43:22 【问题描述】:

我正在尝试遵循“Two Scoops of Django”一书的建议,虽然这本书非常好,但我认为这部分内容不清楚。 所以,我拆分了我的设置文件并创建了一个这样的文件夹:

settings/
 __init__.py
 base.py (allmost everything there)
 local.py (dev. specific settings)
 production.py (settings for Heroku)

大部分设置都在 base.py 文件中

在 local.py 我有这个:

# settings/local.py
from .base import *
DEBUG = True
TEMPLATE_DEBUG = DEBUG
INSTALLED_APPS += ("debug_toolbar", "django_extensions", "south",)

在 production.py 我有这个:

from .base import *
INSTALLED_APPS += ("gunicorn",)

当我在本地运行时:

python manage.py runserver 7000 --settings=appname.settings.local
python manage.py runserver 7000 --settings=appname.settings.production

一切正常。

但是当我将更改推送到 Heroku 时,我得到了日志:

  File "/app/.heroku/python/lib/python2.7/site-packages/gunicorn/util.py", line 354, in import_app

 raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")

所以,我猜 Heroku 没有找到我的设置文件,我不知道如何解决这个问题(可能很简单)。

Two Scoops of Django 在这里有点讽刺,它写了“平台即服务 - 请参阅第 25.2 节”,然后在该部分中只写了“阅读平台文档”:/

【问题讨论】:

这能解决吗:***.com/questions/22674128/… 【参考方案1】:

使用 heroku login 登录 heroku 后,您可以运行以下命令检查您的配置: heroku config。 如果您没有看到SECRET_KEYDJANGO_SETTINGS_MODULE,您可以通过运行来设置它们:

heroku config:set SECRET_KEY='secret_key_goes_here'

heroku config:set DJANGO_SETTINGS_MODULE=mysite.settings.production

最后,确保您的生产设置文件中包含以下语法:

SECRET_KEY = os.environ['SECRET_KEY']

以上说明适用于以下项目结构

-myproject
  -app1
  -app2
  -mysite
    -settings
      __init__.py
      base.py
      dev.py
      production.py
-manage.py
-Pipfile
-Procfile
-requirements.txt

【讨论】:

配置后别忘了去掉空格:【参考方案2】:

您可以使用环境变量DJANGO_SETTINGS_MODULE指定默认设置模块:

https://docs.djangoproject.com/en/dev/topics/settings/#envvar-DJANGO_SETTINGS_MODULE

在本地 Linux 机器上:

export DJANGO_SETTINGS_MODULE=settings.local

在 Heroku 上:

heroku config:set DJANGO_SETTINGS_MODULE=settings.production

【讨论】:

嗨,大豆。我这样做了,我还在 wsgi 文件中包含了os.environ.setdefault('DJANGO_SETTINGS_MODULE','appname.settings.production'),正如我从您发布的文档中了解到的那样。但我收到错误 ImportError: Could not import settings 'settings.production' (它在 sys.path 上吗?设置文件中是否有导入错误?): No module named settings.production : / @alejoss try export DJANGO_SETTINGS_MODULE=project.settings.local 其中project 是您的项目名称。

以上是关于姜戈。在 Heroku 中使用多个设置文件的主要内容,如果未能解决你的问题,请参考以下文章

姜戈。南。赫罗库。键错误:'默认'

姜戈。如何从多个复选框中获取值

如何在 Heroku 上使用 Channels 和 Celery 部署 Django?

禁止(未设置 CSRF cookie。):/paypal/ |姜戈

姜戈。未找到媒体文件

姜戈。生产中的调试