如何删除模板中的默认空格?

时间:2018-02-04 06:50:56

标签: django django-templates

我想列出一系列以逗号分隔的项目。

但如果第一个项目之后的项目不存在,我不希望出现逗号或项目。

所以我实现了这个:

<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 %}或类似的..

1 个答案:

答案 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来检测你何时进入循环的最后一项。