Jinja: La nueva línea final se quita de la plantilla al renderizar.

Creado en 2 may. 2018  ·  2Comentarios  ·  Fuente: pallets/jinja

Comportamiento esperado

Al renderizar un archivo que termina en un carácter de nueva línea (\ n), esperaría que la salida renderizada también terminara en un carácter de nueva línea. Es una convención estándar en sistemas similares a UNIX terminar archivos de texto con una nueva línea al final.

Comportamiento real

La última línea nueva se elimina de la salida renderizada.

Ejemplo

>>> 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
>>>

Tu entorno

  • Versión de Python: 2.7.14+ (Buster / testing de Debian)
  • Versión de Jinja: 2.10 (a través de pip)

Comentario más útil

Ok, gracias por la respuesta, no sabía que era una opción, pero parece que esta debería ser la predeterminada. Parece extraño suponer que el usuario quiere modificar la entrada de formas inesperadas que no tienen nada que ver con el lenguaje de la plantilla. De hecho, la razón por la que estoy abriendo este problema es porque estoy usando shinto-cli (https://github.com/istrategylabs/shinto-cli) para parametrizar algunos archivos en un trabajo de compilación, y noté que estaba generando archivos sin nuevas líneas, por lo que cuando los agrego, tengo líneas aplastadas en una línea. Al principio, iba a abrir un problema con shinto-cli hasta que eché un vistazo a la fuente, y luego probé una plantilla básica de jinja2 de Python REPL y me di cuenta de que esto es solo el comportamiento predeterminado de jinja2.

Puedo abrir un problema con shinto-cli para pedirles que agreguen la opción keep_trailing_newline = True a todas sus llamadas al entorno.

Todos 2 comentarios

Pase keep_trailing_newline=True al Environment : http://jinja.pocoo.org/docs/api/#jinja2.Environment

Ok, gracias por la respuesta, no sabía que era una opción, pero parece que esta debería ser la predeterminada. Parece extraño suponer que el usuario quiere modificar la entrada de formas inesperadas que no tienen nada que ver con el lenguaje de la plantilla. De hecho, la razón por la que estoy abriendo este problema es porque estoy usando shinto-cli (https://github.com/istrategylabs/shinto-cli) para parametrizar algunos archivos en un trabajo de compilación, y noté que estaba generando archivos sin nuevas líneas, por lo que cuando los agrego, tengo líneas aplastadas en una línea. Al principio, iba a abrir un problema con shinto-cli hasta que eché un vistazo a la fuente, y luego probé una plantilla básica de jinja2 de Python REPL y me di cuenta de que esto es solo el comportamiento predeterminado de jinja2.

Puedo abrir un problema con shinto-cli para pedirles que agreguen la opción keep_trailing_newline = True a todas sus llamadas al entorno.

¿Fue útil esta página
0 / 5 - 0 calificaciones