Django报错TemplateDoesNotExist:点击customer_list链接异常
嘿,我帮你排查出来问题啦!这个TemplateDoesNotExist错误其实就是Django找不到你指定的模板文件,咱们一步步来解决:
核心问题分析
从错误信息能看到,Django一直在找名为customer_list的模板(甚至不带.html后缀和路径),但你的视图里明明指定了customer/customer_list.html——这说明要么模板文件的实际位置/命名不对,要么Django没找到正确的搜索路径。
分步解决方案
1. 先确认模板文件的位置和命名
你需要确保模板文件完全符合以下结构:
- 要么放在项目根目录的
templates文件夹下:D:\project\dysapp\ └── templates\ └── customer\ └── customer_list.html # 你的模板文件必须在这里 - 要么放在dysapp app目录的
templates文件夹下(因为APP_DIRS=True,Django会自动搜索每个app的templates):D:\project\dysapp\ └── dysapp\ └── templates\ └── customer\ └── customer_list.html
⚠️ 注意:文件夹名customer、文件名customer_list.html的拼写要完全一致,大小写也要统一(Windows下虽然不敏感,但最好严格对应),必须带.html后缀!
2. 检查视图和配置的细节
- 你的视图代码里的模板路径是对的:
这个路径会告诉Django去搜索上述两个位置的def CustomerList(request, template_name='customer/customer_list.html'): customer = Customer.objects.all() data = {'object_list': customer} return render(request, template_name, data)customer/customer_list.html。 - 确认
settings.py里的INSTALLED_APPS包含'dysapp',否则Django不会搜索这个app的templates文件夹:INSTALLED_APPS = [ # ... 其他默认app 'dysapp', # 必须加上这个! ]
3. 快速排查小技巧
如果确认文件存在但还是报错,试试这些:
- 清除Django缓存:运行
py manage.py clearcache(Django 2.0+支持),或者手动删除项目里的__pycache__文件夹。 - 临时用绝对路径测试视图:把
render里的模板路径改成绝对路径,比如:
如果这样能正常显示,说明你的相对路径配置没问题,只是文件位置错了。return render(request, 'D:/project/dysapp/templates/customer/customer_list.html', data)
最后验证
修改完后重启服务器,再点击customer_list链接,应该就能正常显示客户列表啦!
内容的提问来源于stack exchange,提问作者BCA
相关产品推荐
相关产品推荐

