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

Django拆分多环境配置后访问根路径报TemplateDoesNotExist错误

问题原因
  • 核心原因是拆分配置文件后,settings/base.py中的BASE_DIR路径计算错误,导致Django无法定位到项目根目录下的templates文件夹
  • 原默认单文件配置时,settings.py存放在<项目同名文件夹>目录下,默认BASE_DIR = Path(__file__).resolve().parent.parent计算出来的值是项目根目录,和模板存放路径匹配
  • 拆分配置后,base.py存放在<项目同名文件夹>/settings/目录下,沿用原来的BASE_DIR计算逻辑,得到的路径是<项目同名文件夹>目录,并非项目根目录,此时你配置的TEMPLATES.DIRS = [BASE_DIR / 'templates']会去<项目同名文件夹>/templates下找模板,自然找不到存放在项目根目录的模板文件
  • admin和默认Django首页能正常访问的原因是:这两个页面的模板属于Django内置app自带的模板,TEMPLATES.APP_DIRS = True配置会自动从已注册app的templates目录下找模板,不受自定义根模板目录配置的影响
解决方案

方案1:修正base.py中的BASE_DIR定义

打开settings/base.py,修改BASE_DIR的计算逻辑,多向上跳转一级目录:

# 原单文件配置适用的写法
# BASE_DIR = Path(__file__).resolve().parent.parent
# 拆分配置后的正确写法
BASE_DIR = Path(__file__).resolve().parent.parent.parent

修改完成后保持TEMPLATES配置不变即可,示例:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [BASE_DIR / 'templates'],
        'APP_DIRS': True,
        # 其余配置保持默认即可
    },
]

方案2:单独调整模板目录配置(无需修改BASE_DIR)

如果不想修改全局BASE_DIR配置,也可以单独调整TEMPLATES的DIRS参数:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [Path(__file__).resolve().parent.parent.parent / 'templates'],
        'APP_DIRS': True,
        # 其余配置保持默认即可
    },
]
验证操作

修改完成后重启Django服务,再次访问根路径即可正常加载test.html模板。
注意要确保你的dev.py开头已经写了from .base import *语句,正确导入base.py的所有配置,避免配置不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:24:03