【问题标题】:How do I remove default whitespace in template?如何删除模板中的默认空格?
【发布时间】:2018-07-14 07:18:28
【问题描述】:

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

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

所以我实现了这个:

<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 之后放置一个空格——在逗号之前。 当它显示时,它看起来像:
"I_am_item_one , I_am_item_two, Item_three"

解决此问题的最佳方法是什么?

编辑:是否可以通过对象的属性进行 for 循环?
{% for property in object.property %} 或类似的......

【问题讨论】:

    标签: django django-templates


    【解决方案1】:

    我不知道在模板中循环对象及其属性的任何方法。您可以考虑将数据作为字典/列表传递到模板中或创建模型方法(如本答案中所做的那样: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 检测您何时在循环的最后一个项目上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2021-12-11
      相关资源
      最近更新 更多