无法在Heroku上配置Django/Postgres应用设置

3 投票
1 回答
2042 浏览
提问于 2025-04-18 00:04

我正在用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 个回答

5

你有没有设置过你的 DJANGO_SETTINGS_MODULE 环境变量?我觉得现在发生的事情是这样的:默认情况下,Django 使用的是你的 local.py 设置,所以它试图连接到本地服务器。

为了让 Django 检测并使用你的 production.py 设置,你需要做以下操作:

heroku config:set DJANGO_SETTINGS_MODULE=settings.production

这样一来,当你在 Heroku 上时,Django 就会加载你的 production.py 设置了 :)

撰写回答