Django中无法获取Course表title字段数据问题求助
Django中无法获取Course表title字段的解决方案
核心问题
你在views.py的course_details函数中犯了一个关键错误:调用course.first()后没有将返回的单个Course实例赋值回course变量,导致传递给模板的仍然是QuerySet对象(而非单个模型实例),因此模板中{{ course.title }}无法正确获取字段值。
修复步骤
1. 修改views.py中的course_details函数
将course.first()改为赋值操作,确保course变量指向单个Course实例:
def course_details(request, slug): category = Categories.get_all_category(Categories) course = Course.objects.filter(slug=slug) if course.exists(): # 关键修复:将first()的结果赋值给course变量 course = course.first() else: return redirect('404') context = { 'course': course, 'category': category, } return render(request, 'course/course_details.html', context)
或者更简洁的写法(直接用get_object_or_404自动处理不存在的情况):
from django.shortcuts import get_object_or_404 def course_details(request, slug): category = Categories.get_all_category(Categories) # 直接获取单个实例,不存在则返回404 course = get_object_or_404(Course, slug=slug) context = { 'course': course, 'category': category, } return render(request, 'course/course_details.html', context)
2. 模板写法确认
当course是单个Course实例时,模板中{{ course.title }}的写法完全正确,可以直接获取title字段的值。
额外检查点
- 确认数据库中对应slug的Course记录存在,且title字段已正确填充数据。
- 验证slug生成逻辑正常:保存Course对象时,pre_save信号已触发,slug字段已正确生成并存储到数据库。
内容的提问来源于stack exchange,提问作者Mani Benipal
相关产品推荐
相关产品推荐

