如何在Django Template中迭代嵌套字典与多列表实现卡片正常渲染
问题原因
你模板代码中的第二层循环变量引用错误:
外层已经遍历cards列表拿到单个卡片对象card,但你第二层写的是{% for post in cards.posts %},这里的cards是外层的整个列表,本身没有posts属性,所以这层循环不会执行,才会出现只渲染外层卡片结构、没有内部post列表的问题。
修正后的模板代码
{% for card in cards %} <div class="card"> <div class="card-body"> <h4 class="text-center">{{ card.card_title }}</h4> <div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 g-3"> <!-- 这里把cards.posts改为card.posts,取当前遍历到的单个卡片的posts属性 --> {% for post in card.posts %} <div class="col"> <div class="card"> <div class="card-header text-center text-primary"> <h5>{{ post.post_title }}</h5> </div> <ul class="list-group list-group-flush"> <li class="list-group-item border-0"> {% for content in post.contents %} <i>{{ content }} <br> </i> {% endfor %} </li> </ul> </div> </div> {% endfor %} </div> </div> </div> {% endfor %}
额外检查建议
如果修改后仍未达到预期效果,可以检查数据构造逻辑:
- 你提到
card_postings是列表类型,而字典里card_title直接赋值为这个列表,如果需要展示单个标题,确认是否取了列表的对应单个元素赋值给card_title - 确认每个
card下的posts列表已经正确填充了所有需要展示的post数据,不存在空列表的情况
内容的提问来源于stack exchange,提问作者Dinindu Theekshana
相关产品推荐
相关产品推荐

