Django模板,在for循环

时间:2015-06-02 09:09:54

标签: django django-templates

Django模板系统在for循环中显示列表时添加空行。 我试图渲染这个模板有点困惑:

<h1>My log</h1>

<textarea>
{% for item in items %}
    {{ item }}
{% endfor %}
</textarea>

我期待:

<h1>My log</h1>

<textarea>
    * message line of text 1
    * message 
number 2 on multiple lines
    * message line of text 3
</textarea>

但我得到了:

<textarea>

    * message line of text 1

    * message 
number 2 on multiple lines

    * message line of text 3

</textarea>

有没有办法抑制空行并获得所需的结果?

3 个答案:

答案 0 :(得分:7)

我相信您正在寻找{% spaceless %}代码:

https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#spaceless

<textarea>
{% spaceless %}
    {% for item in items %}
        {{ item }}
    {% endfor %}
{% endspaceless %}
</textarea>

但请注意,只删除了代码之间的空格,因此您可能需要:

<textarea>
{% spaceless %}
    {% for item in items %}{{ item }}{% endfor %}
{% endspaceless %}
</textarea>

事实上,以下可能实际上是为您做的:

<textarea>
    {% for item in items %}{{ item }}{% endfor %}
</textarea>

如果您的item元素实际上包含换行符,那么您需要先使用过滤器或模型方法或其他方式以某种方式去除它们。

答案 1 :(得分:4)

找到了简单的解决方案:

<textarea>
{% for item in items %}   {{ item }}
{% endfor %}</textarea>

答案 2 :(得分:0)

您对spaceless模板代码感兴趣:

  

删除HTML标记之间的空格。这包括制表符和换行符。