【问题标题】:Can't get Django/Postgres app settings working on Heroku无法在 Heroku 上运行 Django/Postgres 应用程序设置
【发布时间】:2014-05-05 15:07:41
【问题描述】:

我正在使用 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
  • 工头启动工作正常
  • 过程文件:web: python www_dev/manage.py runserver 0.0.0.0:$PORT --noreload
  • local.py 设置:

    数据库 = { '默认': { '引擎': 'django.db.backends.postgresql_psycopg2', '名称': 'www', '用户':'amyrlam', '密码': '*', '主机':'本地主机', '端口':'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 = ['*']

    导入操作系统 BASE_DIR = os.path.dirname(os.path.abspath(文件)) STATIC_ROOT = '静态文件' 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 配置中的相同链接)

【问题讨论】:

    标签: python django postgresql heroku


    【解决方案1】:

    您是否设置了 DJANGO_SETTINGS_MODULE 环境变量?我相信正在发生的事情是这样的:默认情况下,Django 使用您的local.py 设置,这就是它尝试连接本地主机的原因。

    要让 Django 检测并使用您的 production.py 设置,您需要执行以下操作:

    heroku config:set DJANGO_SETTINGS_MODULE=settings.production

    这将使 Django 在您使用 Heroku 时加载您的 production.py 设置:)

    【讨论】:

    • 非常感谢,这对我有用。在 wsgi.py 和 manage.py 中,我明确地将 DJANGO_SETTINGS_MODULE 称为 myprojectname.settings.production。要在本地运行,我运行python manage.py runserver --settings=myprojectname.settings.local。这似乎是一个不错的工作流程?
    • 是的,没关系!这是最好的做法:)
    猜你喜欢
    • 2018-01-20
    • 2017-11-05
    • 2015-11-30
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-17
    • 2018-12-03
    • 1970-01-01
    相关资源
    最近更新 更多