2016-10-26 4 views
0

Ich habe eine verschachtelte Struktur und ein rekursives Makro, um es zu rendern. Vor allen schließenden Tags ist jedoch eine zusätzliche Leerzeile vorhanden. Wie entferne ich die leeren Zeilen, so dass ein zusammenhängender Block gerendert wird?jinja2: Wie man ein rekursives Makro korrekt formatiert

Die Daten sind in einer Form, wie so

name='...' 
list 
    a 
    a 
    b 
    name='...' 
    list 
    b 
    b 
    a 

Die Vorlage ist wie so

{% macro list(item) -%} 
    <ul name="{{ item.name }}"> 
    {% for item in item.list -%} 
    {% if item.a -%} 
     <li a="{{ item.a }}"/> 
    {% elif item.b -%} 
     <li b="{{ item.a }}"> 
    {% item.name -%} 
     {{- list(item) }} 
    {% endif -%} 
    {%- endfor %} 
    </ul> 
{% endmacro -%} 

Das erwartete Ergebnis sollte nicht dieses zusätzliche Leerzeichen haben vor dem </ul>.

<ul name="..."> 
    <li a="a"/> 
    <li a="a"/> 
    <li b="b"/> 
    <ul name="..."> 
    <li b="b"/> 
    <li b="b"/> 

    </ul> 
    <li a="a"/> 

</ul> 

Antwort

0

Da Jinja ist die Verfolgung des Zeilenabstandes, warum nicht die Anweisungen für das Ende von „wenn“ und „für“ jinja Erklärungen zu einer Linie bewegen?

{% macro list(item) -%} 
    <ul name="{{ item.name }}"> 
    {% for item in item.list -%} 
    {% if item.a -%} 
     <li a="{{ item.a }}"/> 
    {% elif item.b -%} 
     <li b="{{ item.a }}"> 
    {% item.name -%} 
     {{- list(item) }}{% endif -%}{%- endfor %} 
    </ul> 
{% endmacro -%} 
Verwandte Themen