为什么循环渲染的第一篇帖子会出现意外缩进?
解决循环中第一篇帖子意外缩进的问题
哈,这个问题我一眼就瞅出来啦,是你的HTML结构出了小差错,咱们来一步步修复:
问题根源
你把<ul>的闭合标签</ul>放在了{% if %}块的内部,这会导致第一次循环迭代时就直接关闭了列表容器!后续的<li>元素全都跑到<ul>外面去了,自然就出现了缩进异常的情况。另外,<style>标签放在循环里也会重复输出,完全是没必要的操作。
修正后的代码
{% extends 'base.html' %} {% block content %} <br/> <div class="container"> <h1>Posts</h1> <!-- 把样式移到循环外,只加载一次 --> <style> a { text-transform: capitalize; } </style> <ul> {% for post in object_list %} {% if forloop.counter <= 15 %} <li> <a href="{% url 'article-detail' post.pk %}">{{ post.title }}</a> - {{ post.author.first_name }} {{ post.author.last_name }} <br/> {{ post.body }} </li> <br/> {% endif %} {% endfor %} </ul> <!-- 移到循环结束后,确保所有列表项都在容器内 --> <a href="{% url 'home' %}" class="btn btn-secondary">Back</a> </div> {% endblock %}
关键修改点
- 把
</ul>移到{% endfor %}之后,让所有符合条件的<li>都乖乖待在<ul>容器里,保证列表结构的完整性 - 将
<style>标签移出循环,避免重复输出相同的样式代码,提升页面加载效率 - 顺手调整了代码缩进,让模板结构更清晰(虽然Django模板不强制缩进,但可读性上去了,后续维护也更方便)
这么改完之后,所有帖子的列表项都会正确渲染,缩进异常的问题就彻底解决啦~
内容的提问来源于stack exchange,提问作者Kaushik
相关产品推荐
相关产品推荐

