已正确设置DIR仍出现Django TemplateDoesNotExist问题求助
解决Django TemplateDoesNotExist异常(Anaconda环境下)
我来帮你梳理这个问题——你的模板路径配置看起来完全正确,但Django却只在Anaconda的site-packages目录里搜索模板,这通常是几个容易忽略的小问题导致的,下面是逐一排查的方案:
1. 验证模板路径的有效性和文件存在性
虽然错误页面显示了DIRS的路径,但最好直接在settings.py里添加代码验证:
import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) TDIR = os.path.join(BASE_DIR, 'Templates').replace('\\', '/') # 添加这两行打印,启动服务器时查看控制台输出 print("Template directory exists:", os.path.exists(TDIR)) print("Files in template directory:", os.listdir(TDIR))
启动服务器后,检查控制台:
- 如果
Template directory exists是False:说明路径拼写错误,比如Templates写成了Template,或者BASE_DIR的计算有误 - 如果路径存在但列表里没有
welcomePage.html:确认模板文件名完全一致(注意大小写!Windows看似不区分,但Django在某些环境下会严格匹配,比如welcomepage.html和welcomePage.html是不同的)
2. 简化模板路径的写法
你当前用replace('\\', '/')处理路径分隔符其实没必要,Django在Windows下能正常识别反斜杠,建议简化成:
TDIR = os.path.join(BASE_DIR, 'Templates')
有时候多余的路径处理可能会引入隐性问题,比如末尾的斜杠导致路径识别异常。
3. 检查Django版本是否一致
你之前用的是Django 2.1.5,重装后确认Anaconda环境里的Django版本:
打开Anaconda Prompt,激活你的环境后执行:
pip show django
如果版本不是2.1.5,可能存在细微的配置差异(虽然2.x版本的模板配置变化不大,但建议保持和之前一致的版本),可以重装指定版本:
pip install django==2.1.5
4. 检查文件夹权限
Windows下,Anaconda的Python进程可能没有读取D盘模板文件夹的权限:
- 右键
D:/IgnorazWork/SUDoc/SUDoc/Templates/文件夹,选择「属性」→「安全」 - 确认当前登录用户有「读取」和「列出文件夹内容」的权限,如果没有,添加相应权限
5. 清除缓存并重启服务
开发环境下虽然默认禁用模板缓存,但新环境可能存在残留的缓存文件:
- 删除项目根目录下所有
__pycache__文件夹 - 完全关闭Django开发服务器,再重新启动
- 也可以尝试清除Anaconda环境的Python缓存(删除
C:\ProgramData\Anaconda3\Lib\site-packages\django\__pycache__文件夹)
6. 确认模板加载顺序的优先级
Django的模板加载顺序是先搜索DIRS配置的路径,再搜索各app下的templates文件夹。如果你的错误提示里只显示了app目录的搜索记录,说明Django根本没尝试访问DIRS里的路径——这大概率是路径不存在或者权限问题,回到第一步仔细验证。
内容的提问来源于stack exchange,提问作者Ignramus0817
相关产品推荐
相关产品推荐

