无法在Heroku上配置Django/Postgres应用设置
我正在用Two Scoops of Django模板制作一个Django应用,遇到了Heroku的错误,难道我的Postgres生产设置有问题吗?
- 出现了一个操作错误:无法连接到服务器,连接被拒绝。服务器是否在“localhost”(127.0.0.1)上运行,并且在5432端口接受TCP/IP连接?
- 异常位置:
/app/.heroku/python/lib/python2.7/site-packages/psycopg2/__init__.py
- 使用foreman start命令一切正常
- Procfile内容:
web: python www_dev/manage.py runserver 0.0.0.0:$PORT --noreload
本地设置(local.py):
数据库设置如下:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'www', 'USER': 'amyrlam', 'PASSWORD': '*', 'HOST': 'localhost', 'PORT': '5432', } }
生产设置(production.py):注释掉了上面的本地设置,添加了Heroku Django的标准配置:
导入dj_database_url DATABASES['default'] = dj_database_url.config()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
ALLOWED_HOSTS = ['*']
导入os BASE_DIR = os.path.dirname(os.path.abspath(file)) STATIC_ROOT = 'staticfiles' STATIC_URL = '/static/'
STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )
更新:在生产设置中,尝试更改:
导入dj_database_url DATABASES['default'] = dj_database_url.config(default=os.environ["DATABASE_URL"])
(我把Heroku的颜色URL命名为DATABASE_URL,和heroku config中的链接是一样的)
1 个回答
你有没有设置过你的 DJANGO_SETTINGS_MODULE 环境变量?我觉得现在发生的事情是这样的:默认情况下,Django 使用的是你的 local.py
设置,所以它试图连接到本地服务器。
为了让 Django 检测并使用你的 production.py
设置,你需要做以下操作:
heroku config:set DJANGO_SETTINGS_MODULE=settings.production
这样一来,当你在 Heroku 上时,Django 就会加载你的 production.py 设置了 :)