带有first和last特殊属性的Django列表视图



我在django模板中显示一个列表视图,我想让第一个和最后一个元素显示使用不同的CSS类比内部元素。

我可以通过在python端取一个切片并传入list_of_things(该切片省略了第一个和最后一个元素),first_in_listlast_in_list来实现这一点。我可以用{% list_of_elements|slice %}, {% list_of_elements|first %}, {% list_of_elements|last %}在模板侧做同样的事情。但是两者看起来都不美观,因为它们要求我重复html行三次(对于内部,第一和最后)。

我想要的是一个模板端测试,这样我就可以为更改的部分{% if ... %}。这存在吗?还是有更好的办法?

谢谢。

可以内联if语句:

<ul>
  {% for e in list_of_elements %}
    <li class='{% if forloop.first %}first{% endif %}{% if forloop.last %}last{% endif %}'>{{ e }}</li>
  {% endfor %}
</ul>

编辑:换行以提高可读性:

<ul>
  {% for e in list_of_elements %}
    <li class='{% if forloop.first %}first{% endif %}
               {% if forloop.last %}last{% endif %}'>
      {{ e }}
    </li>
  {% endfor %}
</ul>

你也可以只使用CSS,不使用Django或模板代码。

表例子

tr: nth-last-child (1) {⋮声明}

列表的例子

李:第一个孩子{⋮声明}

等等…

最新更新