2014-06-05 23 views
10

我试图按照“Django的两勺”一书的建议,虽然它是一本非常好的书,但我认为这部分内容还不清楚。 所以,我拆我的设置文件和创建这样的文件夹:Django。在Heroku中使用多个设置文件

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

+0

这是否解决它:http://stackoverflow.com/questions/22674128/cant-get-django-postgres-app-settings-working-on-heroku?rq=1 –

回答

3

你已经登录到Heroku的与Heroku的登录您可以通过运行检查您的configs后: 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'] 

以上intstructions是以下项目结构 -myproject -app1 -app2 -mysite -settings 初始化的.py base.py dev.py production.py -manage.py Pipfile Procfile 要求。txt

+0

不要忘记在配置后删除空格: – shox

8

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

嗨Soytoise。我这样做了,并且在我发布的文档中可以理解,我还在wsgi文件中包含了'os.environ.setdefault('DJANGO_SETTINGS_MODULE','appname.settings.production')'。但是我得到错误* ImportError:无法导入设置'settings.production'(它是否在sys.path中?在设置文件中是否存在导入错误?):没有名为settings.production的模块*:/ – alejoss

+2

@alejoss尝试'export DJANGO_SETTINGS_MODULE = project.settings.local'其中'project'是你的项目的名字。 – Kar

相关问题