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

Django提示TemplateDoesNotExist报错但模板路径正确该如何解决?

Django TemplateDoesNotExist报错(路径显示正确)的诱因与解决方法

问题诱因

  • 模板渲染参数传递错误:template.render()方法的第一个入参要求为上下文字典(无自定义上下文时传空字典{}),第二个参数才是request对象。直接将request作为第一个参数传入会触发模板查找逻辑异常,即使物理路径正确也会抛出不存在错误。
  • settings.py缺失os模块导入:模板配置中使用了os.path.join拼接路径,若settings.py头部未引入import os语句,会导致TEMPLATES.DIRS配置实际失效,Django无法定位根目录下的templates文件夹。
  • 模板文件/目录权限不足:运行Django服务的系统用户没有templates目录或home.html文件的读取权限时,会被Django判定为文件不存在。
  • 文件命名不匹配:实际文件命名大小写、扩展名与调用时的字符串不一致,比如文件名为Home.html、home.htm,或文件存放在templates的子目录中但调用时未添加目录前缀。

解决方法

  • 修正视图层的模板渲染逻辑,推荐直接使用Django封装的render快捷方法,简化代码同时避免参数传错:
    # views.py 优化后代码
    from django.shortcuts import render
    
    def home(request):
        return render(request, 'home.html')
    
    如果要保留原写法,调整render方法的参数顺序即可:
    def home(request):
        template = loader.get_template('home.html')
        return HttpResponse(template.render({}, request))
    
  • 检查settings.py头部,确认已导入os模块:
    import os
    # 若使用Django3.2+默认的Path类型BASE_DIR,可改用更稳妥的路径拼接写法,无需依赖os模块
    # TEMPLATES配置中的DIRS修改为:
    # 'DIRS': [BASE_DIR / 'templates'],
    
  • 修复目录权限,Linux/Mac环境可执行以下命令给templates目录开放读取权限:
    chmod -R 755 templates/
    
  • 核对templates目录下的文件,确认存在命名完全匹配的home.html文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:24:00