Django项目无法读取数据库课程数据并展示给用户问题求助
Django课程列表页加载错误修复方案
已发现的错误点
- 模板循环变量调用错误:for循环遍历的单个课程变量是
course,但模板内全部误用了集合变量courses调用单条课程属性,导致无法正确读取单条课程的封面、名称、更新时间、价格等信息 - 方法名拼写错误:跳转链接中
get_absoule.url拼写错误,正确方法名是get_absolute_url,且该方法直接返回url字符串,不需要额外加.url后缀 - 缺少静态文件加载声明:模板中使用了
{% static %}标签,若模板顶部未添加{% load static %}声明会触发标签找不到的报错 - 空链接冗余:详情页a标签内部无内容,不会响应点击,属于无效代码
修复后的代码
1. list.html模板修复版
{% load static %} {%block content %} <section id="about-home"> <h2>Courses</h2> </section> <!-- courses section starts --> <section id="course"> <h1>Our Amazing Courses</h1> <p>Replenish man have thing gathering lights yielding shall you</p> <div class="course-box"> {% for course in courses %} <div onclick="window.location.href='{{ course.get_absolute_url }}';" class="courses"> <img src="{% if course.cover %}{{ course.cover.url }} {% else %} {% static 'images/c3.jpg' %}{% endif %}" alt="{{ course.name }}" /> <div class="details"> <span>{{course.updated}}</span> <h6><a href="{{ course.get_absolute_url }}">{{course.name}}</a></h6> <div class="star"> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="fas fa-star"></i> <i class="far fa-star"></i> <span>(23)</span> </div> </div> <div class="cost">${{course.price_display}}</div> </div> {% endfor %} </section> {%endblock content%}
可选排查项(若修复后仍有问题可校验)
- 确认
Courses模型中已正确实现get_absolute_url方法,参考写法:
from django.urls import reverse class Courses(models.Model): # 原有字段声明 def get_absolute_url(self): return reverse('course_detail', args=[str(self.id), self.slug])
- 确认
Courses模型中存在cover、updated、name、price_display字段,名称拼写完全一致 - 确认urls.py中已配置名为
course_detail的路由,参数匹配id和slug
内容的提问来源于stack exchange,提问作者Moses Eyime Akoji
相关产品推荐
相关产品推荐

