使用context_object_name后Django前端无法显示对象问题求助
Django ListView设置context_object_name后列表不显示的解决方法
问题根源
页面无法显示对象列表,核心是两个代码错误:
- 模板循环内变量引用错误
- 模型类方法缩进不符合Python语法规范
错误1:模板变量引用错误
在book_list.html的循环逻辑中,你定义的循环变量是book,但内部却使用了{{ object.title }},这会导致无法正确读取当前循环项的属性。需要将object.title改为book.title。
修正后的book_list.html代码:
<!--templates/books/book_list.html--> {% extends '_base.html' %} {% block title %}Books{% endblock title %} {% block content %} {% for book in book_list %} <div> <h2><a href="">{{ book.title }}</a></h2> </div> {% endfor %} {% endblock content %}
错误2:模型类方法缩进错误
models.py中的__str__方法没有缩进在Book类的代码块内,导致该方法不属于Book模型,会引发模型实例的字符串表示异常(虽然不是列表不显示的直接原因,但会影响后续调试和显示逻辑)。
修正后的models.py代码:
from django.db import models # Create your models here. class Book(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=200) price = models.DecimalField(max_digits=6, decimal_places=2) def __str__(self): return self.title
验证
完成上述修正后,重启Django服务器,页面即可正常展示book_list中的所有图书条目。
内容的提问来源于stack exchange,提问作者Adhishraya Sharma
相关产品推荐
相关产品推荐

