2016-03-03 15 views
12

Ich verwende curl, um die Ausgabe meiner Web-App zu sehen. Wenn Flask und Jinja Vorlagen rendern, gibt es in der Ausgabe viel unnötigen Leerraum. Es scheint hinzugefügt zu werden, indem verschiedene Komponenten von Flask-WTF und Flask-Bootstrap gerendert werden. Ich könnte dies mit sed ausziehen, aber gibt es eine Möglichkeit, dies von Jinja zu kontrollieren?Entfernen Sie unnötige Leerzeichen aus Jinja gerenderten Vorlage

+0

verwandt: http://stackoverflow.com/questions/5191147/space-less-tag-for-jinja-templates – davidism

Antwort

19

Jinja hat mehrere Möglichkeiten zu control whitespace. Es nicht haben eine Möglichkeit, Ausgabe zu verschönern, müssen Sie manuell sicherstellen, dass alles "nett" aussieht. Die breiteste Lösung besteht darin, trim_blocks und lstrip_blocks auf dem env.

app.jinja_env.trim_blocks = True 
app.jinja_env.lstrip_blocks = True 

Wenn Sie eine neue Zeile am Ende der Datei behalten möchten, setzen Sie strip_trailing_newlines = False.

Sie können Steuerzeichen verwenden, um die Funktionsweise des Leerraums um einen Block zu ändern. - entfernt immer Leerzeichen, + behält es immer bei und überschreibt die env-Einstellungen für diesen Block. Das Zeichen kann an den Anfang oder das Ende (oder beide) eines Blocks gehen, um das Leerzeichen in dieser Richtung zu steuern.

{%- if ... %} strips before 
{% if ... +%} preserves after 
{%+ if ... -%} preserves before and strips after 
remember that `{% endif %}` is treated separately 

Beachten Sie, dass die Steuerzeichen gelten nur für Vorlagen Sie schreiben. Wenn Sie eine Vorlage hinzufügen oder ein Makro von einer dritten Partei verwenden, wird die Vorlage für dieses Teil angewendet.

+0

Ist '+' und '-' auf alle Tags anwendbar? '{% endif +%}' gibt mir 'erwartetes Token 'Ende des Anweisungsblocks', bekam '+'' :( –

+0

Außerdem gibt '{% if True +%}' mir 'unerwartetes' Ende des Anweisungsblocks ' "Vielleicht hat sich jinja2 seitdem weiterentwickelt? –

+0

Bitte melde das als Fehler mit Jinja. – davidism

Verwandte Themen