Django模板,在for循环中的每个模板标记之后抑制换行符

pi3*_*159 0 django django-templates

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

<h1>My log</h1>

<textarea>
{% for item in items %}
    {{ item }}
{% endfor %}
</textarea>
Run Code Online (Sandbox Code Playgroud)

我期望:

<h1>My log</h1>

<textarea>
    * message line of text 1
    * message 
number 2 on multiple lines
    * message line of text 3
</textarea>
Run Code Online (Sandbox Code Playgroud)

但我得到了:

<textarea>

    * message line of text 1

    * message 
number 2 on multiple lines

    * message line of text 3

</textarea>
Run Code Online (Sandbox Code Playgroud)

有没有办法抑制空行并获得理想的结果?

小智 8

我相信你正在寻找{% spaceless %}标签:

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

<textarea>
{% spaceless %}
    {% for item in items %}
        {{ item }}
    {% endfor %}
{% endspaceless %}
</textarea>
Run Code Online (Sandbox Code Playgroud)

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

<textarea>
{% spaceless %}
    {% for item in items %}{{ item }}{% endfor %}
{% endspaceless %}
</textarea>
Run Code Online (Sandbox Code Playgroud)

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

<textarea>
    {% for item in items %}{{ item }}{% endfor %}
</textarea>
Run Code Online (Sandbox Code Playgroud)

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


pi3*_*159 5

找到了简单的解决方案:

<textarea>
{% for item in items %}   {{ item }}
{% endfor %}</textarea>
Run Code Online (Sandbox Code Playgroud)