Django模板:forloop.first和forloop.last
我在我的模板中有以下代码:
{% for f in friendslist %}
{% if forloop.first %}
// display something
{% endif %}
// display stuff
{% if forloop.last %}
// display something
{% endif %}
{% endfor %}
当朋友列表中有多个项目时,这段代码运行得很好。但是如果只有一个项目,forloop.last条件里面的内容就不会显示。
我猜这是因为在这种情况下,循环是第一个,但我觉得它也是最后一个,对吧?那么为什么第一个和最后一个条件里面的内容都不显示呢?
4 个回答
1
你也可以在模板中使用“not”来解决这个问题。即使列表中只有一个项目,它也能正常工作。
{% for friend in friendslist %}
{% if not forloop.last %}
// display something
{% endif %}
{% if forloop.last %}
// display something
{% endif %}
{% endfor %}
11
你难道不可以用一个“或”标签,比如说 {% if forloop.last or friendlist.count == 1 %} 吗?
{% for f in friendslist %}
{% if forloop.first %}
// display something
{% endif %}
// display stuff
{% if forloop.last or friendlist.count == 1 %}
// display something
{% endif %}
{% endfor %}
43
在我的代码中,如果朋友列表里只有一个元素,它们两个都会执行。这里有一个你可以在命令行中运行的测试,或许你能找出哪里出了问题:
$ ./manage.py shell
>>> from django import template
>>> t = template.Template("""{% for f in friendslist %}
{% if forloop.first %}
First of the loop
{% endif %}
{{ f }}
{% if forloop.last %}
Last of the loop
{% endif %}
{% endfor %}""")
>>> c = template.Context({'friendslist' : ['one element',]})
>>> t.render(c)
First of the loop
one element
Last of the loop