无法在Heroku上使Django/Postgres应用程序设置正常工作

3
我正在使用Two Scoops of Django模板制作Django应用程序。我遇到了Heroku错误,我的Postgres生产设置是否有误?
  • OperationalError at / 无法连接到服务器:拒绝连接 服务器是否在主机“localhost”(127.0.0.1)上运行并接受TCP/IP端口5432上的连接?
  • 异常位置:/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内容:

    import dj_database_url DATABASES['default'] = dj_database_url.config()

    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

    ALLOWED_HOSTS = ['*']

    import os BASE_DIR = os.path.dirname(os.path.abspath(file)) STATIC_ROOT = 'staticfiles' STATIC_URL = '/static/'

    STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'), )

  • 更新:生产设置,尝试更改:

import dj_database_url DATABASES['default'] = dj_database_url.config(default=os.environ["DATABASE_URL"])

(将我的Heroku颜色URL命名为DATABASE_URL,在heroku配置中使用相同的链接)

1个回答

5
你是否已经设置了DJANGO_SETTINGS_MODULE环境变量?我认为正在发生的是:默认情况下Django使用你的local.py设置,这就是为什么它试图在本地主机上进行连接的原因。
为了让Django检测并使用你的production.py设置,你需要执行以下操作:
heroku config:set DJANGO_SETTINGS_MODULE=settings.production
这将使得当你在Heroku上运行时Django加载你的production.py设置。 :)

非常感谢,这对我很有帮助。在wsgi.py和manage.py中,我明确地引用了DJANGO_SETTINGS_MODULE作为myprojectname.settings.production。要在本地运行,我运行python manage.py runserver --settings=myprojectname.settings.local。这个流程看起来还可以吗? - Amy Lam
没问题,完全没问题!那是最佳实践 :) - rdegges

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接