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

如何解决Django中的TemplateDoesNotExist错误?

解决Django TemplateDoesNotExist错误(项目级templates与app同级)

以下是几个你可能没注意到的排查点:

  • 确认BASE_DIR的正确性,替换自定义的SETTINGS_PATH
    很多时候自定义的SETTINGS_PATH路径计算错误,直接用Django默认的BASE_DIR更可靠。BASE_DIR是项目根目录的绝对路径,配置应该写成:

    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [os.path.join(BASE_DIR, 'templates')],  # 这里用BASE_DIR
            'APP_DIRS': True,
            'OPTIONS': {
                # 其他配置...
            },
        },
    ]
    

    如果你坚持用SETTINGS_PATH,先打印出来确认是不是项目根目录:print(SETTINGS_PATH),确保它指向包含templates文件夹的目录。

  • 检查TEMPLATES配置结构是否正确
    你提到的TEMPLATE_DIR可能是拼写错误,Django的正确配置项是TEMPLATES列表中字典的DIRS字段,必须把模板目录放在这个列表里,而非单独的TEMPLATE_DIR变量。

  • 确认INSTALLED_APPS中添加了你的应用
    即使是项目级模板,APP_DIRS: True需要依赖INSTALLED_APPS里的应用配置,确保你的app已经添加进去:

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        # ...其他默认应用
        'your_app_name',  # 这里要加你的app
    ]
    
  • 检查模板文件的引用路径
    如果模板放在templates下的子文件夹(比如templates/your_app/index.html),渲染时要写完整路径:return render(request, 'your_app/index.html'),而非只写index.html。

  • 清除Django缓存并重启服务
    修改配置后一定要重启runserver,如果用了缓存框架,执行python manage.py clearcache清除缓存,避免旧配置生效。

  • 检查文件名和大小写
    Linux/macOS系统对文件名大小写敏感,确保模板文件名和你渲染时写的完全一致(比如Index.html和index.html是两个文件)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:05:26