【问题标题】:Django. Using multiple settings files with Heroku姜戈。在 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 节”,然后在该部分中只写了“阅读平台文档”:/

【问题讨论】:

标签: python django heroku settings


【解决方案1】:

使用 heroku login 登录 heroku 后,您可以运行以下命令检查您的配置: heroku config。 如果您没有看到SECRET_KEY 和DJANGO_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 是您的项目名称。
猜你喜欢
  • 2013-02-10
  • 2020-08-17
  • 2018-02-27
  • 2020-01-16
  • 2015-07-15
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多