web-dev-qa-db-fra.com

Supprimer les espaces inutiles du modèle rendu Jinja

J'utilise curl pour regarder la sortie de mon application Web. Lorsque Flask et les modèles de rendu Jinja, il y a beaucoup d'espace blanc inutile dans la sortie. Il semble être ajouté en rendant divers composants de Flask-WTF et Flask-Bootstrap. Je pourrais supprimer cela en utilisant sed, mais existe-t-il un moyen de contrôler cela depuis Jinja?

28
Hexatonic

Jinja a plusieurs façons de contrôler les espaces blancs . Il n'a pas un moyen de sublimer la sortie, vous devez vous assurer manuellement que tout a l'air "Nice".

La solution la plus large consiste à définir trim_blocks et lstrip_blocks sur l'env.

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

Si vous souhaitez conserver une nouvelle ligne à la fin du fichier, définissez strip_trailing_newlines = False.

Vous pouvez utiliser des caractères de contrôle pour modifier le fonctionnement des espaces autour d'une balise. - supprime toujours les espaces, + la conserve toujours, remplaçant les paramètres env pour cette balise. Le - le caractère peut aller au début ou à la fin (ou les deux) d'une balise pour contrôler les espaces dans cette direction, le + le caractère n'a de sens qu'au début d'une balise.

  • {%- if ... %} bandes avant
  • {%- if ... -%} bandes avant et après
  • {%+ if ... %} conserve avant
  • {%+ if ... -%} conserve avant et dépouille après
  • rappelez-vous que {% endif %} est traité séparément

Les caractères de contrôle ne s'appliquent qu'aux modèles que vous écrivez. Si vous incluez un modèle ou utilisez une macro d'un tiers, cependant, ils ont écrit que le modèle s'appliquera à cette partie.

57
davidism

Pour réduire les espaces avant et après un bloc:

{%- if form.message -%} //trims before
   {{ form.message }}
{%- endif -%} // trims after
1
Anas