Jinja: Comportamiento incorrecto del filtro truncado

Creado en 3 abr. 2017  ·  4Comentarios  ·  Fuente: pallets/jinja

Código:

from jinja2 import Template

print(Template('{{ "2016.10.26_cc37528" | truncate(11, True) }}').render())
print(Template('{{ "2016.10.26_cc37528" | truncate(12, True) }}').render())
print(Template('{{ "2016.10.26_cc37528" | truncate(13, True) }}').render())
print(Template('{{ "2016.10.26_cc37528" | truncate(14, True) }}').render())

Comportamiento esperado

2016.10....
2016.10.2...
2016.10.26...
2016.10.26_...

Comportamiento real

2016.10....
2016.10.2...
2016.10.26_cc37528
2016.10.26_cc37528

Código de plantilla

{{ "2016.10.26_cc37528" | truncate(13, True) }}

Tu entorno

  • Versión de Python: 3.6.1
  • Versión de Jinja: 2.9.5

Comentario más útil

Está. Establecer el margen de maniobra en 0 soluciona el problema. Yo diría que es una violación de POLA cuando se usan cadenas cortas.

Todos 4 comentarios

Compruebe si esto es causado por el argumento leeway . El valor predeterminado cambió recientemente.

https://github.com/pallets/jinja/blob/master/jinja2/filters.py#L467

Está. Establecer el margen de maniobra en 0 soluciona el problema. Yo diría que es una violación de POLA cuando se usan cadenas cortas.

Sí, estoy de acuerdo @ AMDmi3 . También abordamos este problema.

El problema es que Jinja tiene una implementación obstinada que es incompatible con el uso como motor de plantillas de propósito general.

También encontré este problema y pasé varias horas encontrando el error. Claramente, las nuevas opciones deberían ser compatibles con versiones anteriores y el valor predeterminado debería ser leeway = 0 .
Quien comience a usar la nueva opción leeway sabrá que existe y usará el valor que desee. Aquellos que no conocen el nuevo parámetro no necesitarán cambiar su código ...

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