You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku部署Django+PostgreSQL 生产环境settings.py配置方法

Heroku部署Django+PostgreSQL的数据库HOST配置说明

不要手动硬编码生产环境的数据库HOST值:你当前配置里的localhost指向的是Heroku上运行应用的dyno容器本身,根本连不上独立托管的Postgres服务;就算你去后台查到固定HOST地址填进去,后续Heroku做数据库迁移、故障切换时连接参数会自动更新,硬编码配置会直接失效,维护成本极高。

Heroku在你绑定PostgreSQL附加组件后,会自动往应用环境里注入DATABASE_URL环境变量,这个变量里已经打包了生产库全部连接信息:HOST、PORT、库名、用户名、密码、SSL要求,直接解析使用即可,这也是Heroku官方推荐的零额外配置方案。

具体配置步骤

  • 安装必备依赖
    先安装数据库连接解析工具和PostgreSQL驱动,装完务必把依赖写入requirements.txt,不然Heroku部署时会报缺包错误:
    pip install dj-database-url psycopg2-binary
    pip freeze > requirements.txt
    
  • 修改settings.py配置
    替换原有纯本地硬编码的配置,实现本地开发、Heroku生产环境自动适配,不需要来回切换参数:
    # 在settings.py顶部添加导入
    import os
    import dj_database_url
    
    # 原有本地开发用的数据库配置保留作为兜底
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'trilz',
            'USER': 'postgres',
            'PASSWORD': 'franz123',
            'HOST': 'localhost',
            'PORT': '5432',
        }
    }
    
    # 检测到运行在Heroku环境时,自动读取平台注入的数据库配置覆盖本地参数
    if 'DYNO' in os.environ:
        DATABASES['default'] = dj_database_url.config(
            conn_max_age=600,
            ssl_require=True # Heroku托管的Postgres强制要求SSL连接
        )
    
  • 部署后验证
    把代码推到Heroku部署完成后,执行以下命令跑数据库迁移,能正常执行就说明数据库连接配置完全正确:
    heroku run python manage.py migrate
    

补充说明

如果你一定要手动查看生产库的HOST值,可以进入Heroku控制台,找到你绑定的Heroku Postgres附加组件,在详情页的数据库连接信息板块能看到对应Host字段,但非常不推荐手动硬编码该值,平台可能在运维操作时动态调整连接参数,硬编码会埋下服务不可用的隐患。


内容的提问来源于stack exchange,提问作者Franz Zapanta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:12:17