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


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

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节”,然后在该部分中它只写“读取平台文档” :/


8922
2018-06-05 22:51


起源

这解决了吗: stackoverflow.com/questions/22674128/... - Robert Grant


答案:


使用heroku登录登录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']

以上说明适用于以下项目结构 -我的项目   -app1   -app2   -我的网站     -settings        在里面的.py       base.py       dev.py       production.py -manage.py Pipfile Procfile requirements.txt


6
2017-11-15 02:04



别忘了在配置后删除空格: - shox


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

8
2018-06-06 04:09



嗨Soytoise。我做到了,我也包括在内 os.environ.setdefault('DJANGO_SETTINGS_MODULE','appname.settings.production') 在我发布的文档中我理解的wsgi文件中。但是我得到了错误 ImportError:无法导入设置'settings.production'(是否在sys.path上?设置文件中是否有导入错误?):没有名为settings.production的模块 :/ - Alejandro Veintimilla
@alejoss试试 export DJANGO_SETTINGS_MODULE=project.settings.local 哪里 project 是您的项目的名称。 - Kar