只是一个简单的问题:有没有办法从 Django 模板语言的列表中删除一个项目?
我有一种情况,我正在遍历一个列表,并在另一个列表中打印第一个项目。打印第一项后,我想将其从该列表中删除。
见下文:
{% for item in list1 %}
{{list2.0}}
#remove list2.0 from list2
{% endfor %}
提前致谢。
只是一个简单的问题:有没有办法从 Django 模板语言的列表中删除一个项目?
我有一种情况,我正在遍历一个列表,并在另一个列表中打印第一个项目。打印第一项后,我想将其从该列表中删除。
见下文:
{% for item in list1 %}
{{list2.0}}
#remove list2.0 from list2
{% endfor %}
提前致谢。
If your list1 and list2 are indeed lists and not querysets, this seems to work:
{{ list2 }} {# show list2 #}
{% for item in list1 %}
{{ list2.0 }}
{# remove list2.0 from list2 #}
{{ list2.pop.0 }}
{% endfor %}
{{ list2 }} {# empty #}
Note that pop
does not return in this case, so you still need {{ list2.0 }} explicitly.
如果可能的话,我会尝试过滤掉视图中的项目。否则,您可以在 for 循环中添加 if 或 if not 语句。
{% for item in list%}
{% if item.name != "filterme" %}
{{ item.name }}
{% endif %}
{% endfor %}
你不能删除一个项目,但你可以得到没有某个项目的列表(在一个恒定的索引)
{% with list2|slice:"1:" as list2 %}
...
{% endwith %}
当然,嵌套规则也适用,等等。
一般来说,我发现自己在进行复杂的数据结构操作,只需将其移至 Python - 它会更快更清洁。
没有这样的内置模板标签。我了解您不想打印list2
iflist1
的第一项不为空。尝试:
{% for item in list1 %}
{{list2.0}}
...
{% endfor %}
{% for item in list2 %}
{% if list1 and forloop.counter == 1 %}
# probably pass
{% else %}
{{ item }}
{% endif %}
{% endfor %}
这不是在模板中操作列表内容的好主意。