开发者

Can I suppress newlines after each template tag with Django's template engine?

In Rails ERB, you can suppress newlines by adding a trailing hyphen to tags:

<ul>
  <% for @item in @items -%>
    <li><%= @item %></li>
  <% end -%>
</ul>

becomes:

<ul>
    <li>apple</li>
    <li>banana</li>
    <li>cacao</li>
</ul>

Is there a way to开发者_JS百科 do this in Django? (Disclosure: I'm generating a csv file with Django)

Edit: Clarified that the newlines I'm hunting down are the ones left behind after the template tags.


The closest I've found to what you're looking for (I'm looking for the same thing) is talk about a future patch, here: http://code.djangoproject.com/ticket/2594.

Unfortunately, it looks like there's not much you can do until they merge that patch in.


{% spaceless %}
<ul>
    <li>apple</li>
    <li>banana</li>
    <li>cacao</li>
</ul>
{% endspaceless %}

I am not aware about any way to discard template tags lines. I'd vote for opening bug report.


For example:

<ul>
{% for obj in list %}
    <li>{{ obj|linebreaksbr|striptags }}</li>
{% endfor %}
</ul>

Or this, which also strips whitespaces/tabs/etc, between HTML tags:

{{ spaceless }}
<ul>
{% for obj in list %}
    <li>{{ obj }}</li>
{% endfor %}
</ul>
{{ endspaceless }}


It is 2016 now, and I think this issue is still present. In this tutorial https://www.youtube.com/watch?v=vQjmz9wCjLA at around 1:45 a unittest of a template shows that there is a trailing newline on the end of the tag.


When you write a template, you could open the ul hardcoded in the template and looping trought items en returning there value with the in it.

As far as i know there isn't a default function for that.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜