Jinja: Comportement incorrect du filtre tronqué

Créé le 3 avr. 2017  ·  4Commentaires  ·  Source: pallets/jinja

Code:

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

Comportement attendu

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

Comportement réel

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

Code du modèle

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

Votre environnement

  • Version Python : 3.6.1
  • Version Jinja : 2.9.5

Commentaire le plus utile

Il est. La définition de la marge de manœuvre à 0 résout le problème. Je dirais que c'est une violation de POLA lors de l'utilisation de chaînes courtes.

Tous les 4 commentaires

Vérifiez si cela est causé par l'argument leeway . La valeur par défaut pour cela a changé récemment.

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

Il est. La définition de la marge de manœuvre à 0 résout le problème. Je dirais que c'est une violation de POLA lors de l'utilisation de chaînes courtes.

Ouais je suis d'accord @AMDmi3 . Nous venons d'aborder ce problème également.

Le problème est que Jinja a une implémentation opiniâtre qui est incompatible avec une utilisation en tant que moteur de modèles à usage général.

J'ai aussi trouvé ce problème et j'ai passé plusieurs heures à trouver le bug. Il est clair que les nouvelles options doivent être rétrocompatibles et la valeur par défaut doit être leeway = 0 .
Celui qui commence à utiliser la nouvelle option leeway saura qu'elle existe et utilisera la valeur qu'il veut. Ceux qui ne connaissent pas le nouveau paramètre n'auront pas besoin de changer leur code...

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