我在django模板中显示一个列表视图,我想让第一个和最后一个元素显示使用不同的CSS类比内部元素。
我可以通过在python端取一个切片并传入list_of_things
(该切片省略了第一个和最后一个元素),first_in_list
和last_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) {⋮声明}
列表的例子
李:第一个孩子{⋮声明}
等等…