繁体   English   中英

Django的。 使用Heroku的多个设置文件

[英]Django. Using multiple settings files with Heroku

我试图遵循“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没有找到我的设置文件,我不知道如何解决这个问题(可能很简单)。

Django的两个独家新闻在这里具有讽刺意味,它写道“平台即服务 - 参见第25.2节”,然后在该部分中它只写“读取平台文档” :/

使用heroku登录登录heroku后,您可以通过运行: heroku config来检查您的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

您可以使用环境变量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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM