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

部署Django项目至Heroku时遭遇TemplateDoesNotExist错误

解决Django部署Heroku时的TemplateDoesNotExist错误

我之前也踩过一模一样的坑!本地跑起来功能全正常,一部署到Heroku就报模板找不到,折腾了好一会儿才搞定,给你几个最可能的排查方向:

  • 重点排查大小写问题:Heroku用的是Linux服务器,文件名和路径严格区分大小写,但本地Windows/macOS通常不区分。你配置里写的是'DIRS': [os.path.join(BASE_DIR, 'Templates')](首字母大写),先去确认你项目里的模板文件夹实际是叫Templates还是templates(小写),把配置里的路径改成和实际文件夹完全一致的大小写,比如如果是小写就改成os.path.join(BASE_DIR, 'templates')。

  • 确认模板文件夹已经提交到Git:有时候.gitignore文件会不小心把模板目录排除在外,导致Heroku上根本没有这个文件夹。检查下你的.gitignore,别让它忽略了Templates(或templates)目录,然后执行以下命令重新提交:

    git add Templates/
    git commit -m "Add template folder to repo"
    git push heroku main
    
  • 验证BASE_DIR的路径是否正确:有时候Heroku上的BASE_DIR指向和本地有差异,你可以通过Heroku命令行验证:

    heroku run python manage.py shell
    

    然后在shell里输入:

    import os
    print(BASE_DIR)
    print(os.path.exists(os.path.join(BASE_DIR, 'Templates')))  # 替换成你实际的文件夹名
    

    如果第二个命令返回False,说明路径不对,建议改用Django 3.1+支持的路径对象写法,更可靠:

    # settings.py里先导入path
    from pathlib import Path
    BASE_DIR = Path(__file__).resolve().parent.parent
    
    # 然后修改TEMPLATES的DIRS
    'DIRS': [BASE_DIR / 'templates'],  # 这里写实际的文件夹名
    
  • 检查app内模板的结构:如果你是把模板放在Home应用内部(依赖APP_DIRS=True),那正确的路径应该是Home/templates/Home/index.html,而不是根目录的Templates/Home/index.html。如果是这种情况,确保app内的templates文件夹也提交到Git了。

按照上面的步骤排查,大概率能解决你的问题——我当时就是因为大小写的问题踩的坑😅

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 06:17:32