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

在Heroku部署Django应用时遇错误,请求技术帮助

排查Django部署Heroku的常见问题

嘿,我刚上手Django和Heroku的时候也踩过超多坑,太懂这种试了一堆网上方案还卡壳的郁闷了!咱们一步步来排查,先从最容易忽略的细节入手:

  • 先确认requirements.txt的准确性
    别光有文件就行,得确保里面包含了所有必需的依赖:

    • 必须有gunicorn(Heroku要求用它作为WSGI服务器),比如gunicorn==21.2.0
    • 如果用Heroku的PostgreSQL数据库,要加psycopg2-binary(别用psycopg2,会编译失败)
    • 建议用pip freeze > requirements.txt生成,手动写很容易漏依赖或者拼错包名
    • 检查文件里有没有无效的换行或注释,Heroku会严格解析这个文件
  • 核对Procfile的配置
    项目根目录必须有一个首字母大写、无后缀的Procfile,内容格式是:

    web: gunicorn 你的项目名称.wsgi --log-file -
    

    这里的「你的项目名称」是指Django项目里包含wsgi.py的那个文件夹名,别写错!比如你的项目结构是myblog/myblog/wsgi.py,那就要写myblog.wsgi

  • 拉取Heroku日志找具体错误
    别只看部署时的表面报错,跑这个命令看实时日志:

    heroku logs --tail
    

    重点找ModuleNotFoundError(缺依赖)、Application error(Procfile或WSGI配置错)、数据库连接失败这类关键信息,这些才是定位问题的核心

  • 检查项目结构是否合规
    确保核心文件的层级是对的,正确结构应该是:

    你的项目根目录/
      你的Django项目文件夹/
        wsgi.py
        settings.py
      manage.py
      requirements.txt
      Procfile
    

    别把requirements.txt或Procfile放到子文件夹里,Heroku找不到它们

  • 修正Django settings.py的关键配置

    • 把DEBUG设为False(Heroku禁止DEBUG=True的生产部署)
    • 在ALLOWED_HOSTS里加上你的Heroku域名:ALLOWED_HOSTS = ['your-app-name.herokuapp.com', 'localhost'],把your-app-name换成你Heroku上的应用名
    • 数据库配置要适配Heroku的环境变量,记得先把dj-database-url加到requirements.txt,然后在settings.py里写:
      import dj_database_url
      DATABASES = {
          'default': dj_database_url.config(default='sqlite:///db.sqlite3')
      }
      
  • 重新走一遍正确的部署流程
    先把所有修改提交到Git:

    git add .
    git commit -m "fix deployment configs"
    

    再推到Heroku:

    git push heroku main
    

    (如果你的Git分支不是main,换成对应的分支名,比如master)

要是按这些步骤排查后还是有问题,把日志里的具体错误贴出来,咱们再针对性解决!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 04:25:01