django列表视图与第一个和最后一个特殊

时间:2011-10-24 12:50:15

标签: django django-templates django-views

我在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 ... %}可以只更改部分。这存在吗?或者有更好的方法吗?

感谢。

2 个答案:

答案 0 :(得分:4)

你可以内联你的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>

答案 1 :(得分:0)

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

表格示例

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

列出示例

li:first-child {   ⋮声明 }

等...