[英]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_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
您可以使用环境变量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.