Django中return render方法失效,TemplateDoesNotExist错误求助
解决Django中「TemplateDoesNotExist at /posts/」的常见问题
嘿,刚学Django遇到模板找不到的问题太正常了!我帮你梳理几个最容易踩的坑,一步步排查:
先确认核心配置是否到位
- 应用必须注册:打开项目根目录的
settings.py,检查INSTALLED_APPS列表里有没有加'posts'?Django只会去已注册应用的templates目录找模板,没注册的话肯定找不到。 - 模板路径要符合规范:Django默认的模板查找逻辑是「应用目录/templates/应用名/模板文件」,所以你的
index.html必须放在posts/templates/posts/index.html,而不是直接放在posts/templates/index.html。很多新手会漏了内层的posts目录,这是高频错误!
检查代码细节
1. 你提供的项目urls.py(这段看起来没问题,再确认下)
from django.contrib import admin from django.conf.urls import url, include urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^posts/', include('posts.urls')), ]
2. 应用的views.py
确保渲染模板的代码路径正确,比如:
from django.shortcuts import render def index(request): # 必须写完整的相对路径:应用名/模板名 return render(request, 'posts/index.html')
3. 应用的urls.py
确认视图已经映射到/posts/路径,比如:
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.index, name='index'), ]
其他实用排查技巧
- 运行
python manage.py check,Django会帮你检查项目配置的常见错误,比如应用未注册、路径拼写问题。 - 检查目录和文件名的拼写:比如
templates是不是写成template了?posts有没有拼错?Linux/macOS下大小写敏感,别把Posts和posts搞混。 - 开启
settings.py里的DEBUG = True,错误页面会显示Django实际查找的模板路径列表,你可以对照着看哪个路径不符合预期。
按照这些步骤排查,大概率能解决问题~
内容的提问来源于stack exchange,提问作者Srinivas Gadi
相关产品推荐
相关产品推荐

