Python Django模板:forloop.first和forloop.last
我的模板中有以下代码:Python Django模板:forloop.first和forloop.last,python,django,Python,Django,我的模板中有以下代码: {% for f in friendslist %} {% if forloop.first %} // display something {% endif %} // display stuff {% if forloop.last %} // display something
{% for f in friendslist %}
{% if forloop.first %}
// display something
{% endif %}
// display stuff
{% if forloop.last %}
// display something
{% endif %}
{% endfor %}
当friendslist中有多个项目时,它会按预期工作。但是如果只有一个项目,那么forloop.last中的内容
条件不显示
我想这是因为这种情况下的循环是第一个,但我的意思是它也是最后一个,对吗?那么为什么不把这两个内容都放在第一个和最后一个里面呢
条件显示?在我的代码中,如果friendslist中只有一个元素,它们都会执行。下面是一个可以在shell中运行的测试,您可以在其中找出哪些不起作用:
$ ./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
难道你不能使用像{%if-forloop.last或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 %}
您还可以在模板中使用“not”来解决此问题。即使列表中只有一项,它也可以工作
{% for friend in friendslist %}
{% if not forloop.last %}
// display something
{% endif %}
{% if forloop.last %}
// display something
{% endif %}
{% endfor %}
我在一个只有一个项目的列表对象上尝试了这段代码,两个部分的内容都按预期显示。这可能仍然取决于django版本,我认为您应该提及您正在使用的django版本。