我正在使用以下模板代码来尝试生成格式为“ a,b,c和d”的列表:

{% for item in list %}
  {% if not forloop.first %}
    {% if not forloop.last %}
      ,
    {% endif %}
  {% endif %}
  {% if forloop.last %}
    and
  {% endif %}
  {{ item }}
{% endfor %}


我得到的实际输出是'a,b,c和d'(注意逗号前的空格)。

怎么回事,如何解决?

最佳答案

好的,经过几次尝试,我认为我已经找到了解决方案,虽然有点冗长,但是可以满足您的要求-无需多余的空格-

{% for item in list %}
    {% if forloop.revcounter > 2 %}
        {{ item }},
    {% else %}
         {% if forloop.revcounter == 2 %}
              {{ item }} and
         {% else %}
              {{ item }}
         {% endif %}
    {% endif %}
{% endfor %}


forloop.revcounter从循环的末尾开始递减计数,因此您将'and'添加到倒数第二个项目,而使最后一个没有任何内容。

关于python - django:模板中字符串的神秘填充,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14881969/

10-09 07:25