Jinja: La nouvelle ligne de fin est supprimée du modèle lors du rendu.

Créé le 2 mai 2018  ·  2Commentaires  ·  Source: pallets/jinja

Comportement prévisible

Lors du rendu d'un fichier qui se termine par un caractère de nouvelle ligne (\n), je m'attendrais à ce que la sortie rendue se termine également par un caractère de nouvelle ligne. Il s'agit d'une convention standard sur les systèmes de type UNIX pour terminer les fichiers texte par une nouvelle ligne de fin.

Comportement réel

La nouvelle ligne finale est supprimée de la sortie rendue.

Exemple

>>> c
u'foo is {{ foo }}\nquux is {{ quux }}\nasdf\n'
>>> t = jinja2.Template(c)
>>> t.render(foo="bar", quux="baz")
u'foo is bar\nquux is baz\nasdf'
>>> s = t.stream()
>>> s.next()
u'foo is \nquux is \nasdf'
>>> s.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ifreeman/.local/lib/python2.7/site-packages/jinja2/environment.py", line 1271, in __next__
    return self._next()
StopIteration
>>>

Votre environnement

  • Version Python : 2.7.14+ (buster/test Debian)
  • Version Jinja : 2.10 (via pip)

Commentaire le plus utile

Ok, merci pour la réponse, je ne savais pas que c'était une option, mais il semble que cela devrait être la valeur par défaut. Il semble étrange de supposer que l'utilisateur souhaite modifier l'entrée de manière inattendue qui n'a rien à voir avec le langage du modèle. En fait, la raison pour laquelle j'ouvre même ce problème est que j'utilise shinto-cli (https://github.com/istrategylabs/shinto-cli) pour paramétrer certains fichiers dans une tâche de build, et j'ai remarqué qu'il produisait des fichiers sans retour à la ligne, donc quand je les ajoute, j'ai des lignes écrasées sur une seule ligne. Au début, j'allais ouvrir un problème avec shinto-cli jusqu'à ce que je jette un œil à la source, puis j'ai essayé moi-même un modèle jinja2 de base du python REPL et j'ai réalisé qu'il ne s'agissait que du comportement par défaut de jinja2.

Je peux ouvrir un problème avec shinto-cli pour leur demander d'ajouter l'option keep_trailing_newline=True à tous leurs appels d'environnement.

Tous les 2 commentaires

Passez keep_trailing_newline=True au Environment : http://jinja.pocoo.org/docs/api/#jinja2.Environnement

Ok, merci pour la réponse, je ne savais pas que c'était une option, mais il semble que cela devrait être la valeur par défaut. Il semble étrange de supposer que l'utilisateur souhaite modifier l'entrée de manière inattendue qui n'a rien à voir avec le langage du modèle. En fait, la raison pour laquelle j'ouvre même ce problème est que j'utilise shinto-cli (https://github.com/istrategylabs/shinto-cli) pour paramétrer certains fichiers dans une tâche de build, et j'ai remarqué qu'il produisait des fichiers sans retour à la ligne, donc quand je les ajoute, j'ai des lignes écrasées sur une seule ligne. Au début, j'allais ouvrir un problème avec shinto-cli jusqu'à ce que je jette un œil à la source, puis j'ai essayé moi-même un modèle jinja2 de base du python REPL et j'ai réalisé qu'il ne s'agissait que du comportement par défaut de jinja2.

Je peux ouvrir un problème avec shinto-cli pour leur demander d'ajouter l'option keep_trailing_newline=True à tous leurs appels d'environnement.

Cette page vous a été utile?
0 / 5 - 0 notes