我想列出一系列以逗号分隔的项目。
但如果第一个项目之后的项目不存在,我不希望出现逗号或项目。
所以我实现了这个:
<em>{{object.item1|default_if_none:""}}</em>
{% if object.item2 %}
<em>, {{object.item2|default_if_none:""}},</em>
{% endif %}
<em>{{object.item3|default_if_none:""}}</em>
如果object.item2存在,它会在逗号之前在item1之后放置一个空格。
当它显示时,它看起来像:
&#34; I_am_item_one,I_am_item_two,Item_three&#34;
解决此问题的最佳方法是什么?
编辑:是否可以循环访问对象的属性?
{% for property in object.property %}
或类似的..
答案 0 :(得分:2)
我不知道在模板中循环对象及其属性的任何方法。您可以考虑将数据作为字典/列表传递到模板中,或者创建模型方法(在此答案中完成:Django templates: loop through and print all available properties of an object?)
一旦您的数据可迭代,您可以使用以下代码来决定何时添加逗号。如果您想在每个项目之间或仅在第一个项目之后使用逗号,我不完全清楚,因此这里有两个选项。
这只会在第一个条目
上添加逗号{% for item in item_list %}
<em>{{ item }}</em>{% if forloop.first %}, {% endif %}
{% endfor}
这将在除最后一个项目之外的每个项目后添加逗号
{% for item in item_list %}
<em>{{ item }}</em>{% if not forloop.last%}, {% endif %}
{% endfor}
可能相当清楚,但你可以使用forloop.first
来检测你第一个项目的时间,forloop.last
来检测你何时进入循环的最后一项。