运行Django项目遇TemplateDoesNotExist及版本混淆问题求助
嘿,我来帮你搞定这两个棘手的问题!
问题1:TemplateDoesNotExist 错误
访问 /courses/course_list.html 时出现这个错误,你可以从这几个方向排查:
- 核对模板文件路径:Django默认会扫描每个app下的
templates目录,建议把course_list.html放在courses/templates/courses/路径下(嵌套一层app名是为了避免不同app的模板重名冲突);如果放在项目根目录的templates文件夹里,要确保项目settings.py的TEMPLATES配置里包含了这个根目录路径。 - 确认app已注册:打开项目根目录的
settings.py,检查INSTALLED_APPS列表里有没有加'courses'——要是没加,Django根本不会去这个app的templates目录找模板。 - 检查视图渲染逻辑:你的视图函数得正确传递模板路径和上下文,比如:
别写错模板路径的拼写或大小写,Django对路径大小写是敏感的。from django.shortcuts import render from .models import Course def course_list(request): courses = Course.objects.all() # 这里的模板路径要和实际文件位置对应 return render(request, 'courses/course_list.html', {'courses': courses}) - 你的模板代码本身没问题:
只要视图里传了{% for course in courses %} <h2>{{course.title}}</h2> {{course.description}} {% endfor %}courses变量,这段循环渲染的逻辑是完全OK的。
问题2:Django版本不一致的混淆
浏览器显示Django 1.11.1,但PyCharm项目解释器设的是2.0.3,这大概率是运行环境和项目配置不匹配导致的,解决步骤:
- 检查PyCharm的运行配置:打开
Run -> Edit Configurations,找到你的Django服务配置,看看Python interpreter是不是选了你设置的那个2.0.3的虚拟环境——很多时候这里会默认用系统自带的Python解释器,版本自然不对。 - 确认虚拟环境激活状态:在PyCharm的终端里输入
python -m django --version,如果显示1.11.1,说明当前终端没激活你配置的虚拟环境。手动激活一下:Linux/macOS用source venv/bin/activate,Windows用venv\Scripts\activate,再重新启动Django服务。 - 重启PyCharm:有时候配置修改后需要重启IDE才能彻底生效,试试重启后再运行服务,看浏览器错误页面显示的版本是不是变成2.0.3了。
另外,你的courses/urls.py代码补全后应该是这样的(假设视图函数叫course_list):
from django.conf.urls import url from . import views urlpatterns = [ url(r'^$', views.course_list, name='course_list'), ]
内容的提问来源于stack exchange,提问作者Ashish Yadav
相关产品推荐
相关产品推荐

