Jinja: Fehlerhaftes Verhalten des Filters abschneiden

Erstellt am 3. Apr. 2017  ·  4Kommentare  ·  Quelle: 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())

Erwartetes Verhalten

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

Tatsächliches Verhalten

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

Vorlagencode

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

Ihre Umgebung

  • Python-Version: 3.6.1
  • Jinja-Version: 2.9.5

Hilfreichster Kommentar

Es ist. Das Setzen des Spielraums auf 0 behebt das Problem. Ich würde sagen, es ist eine POLA-Verletzung, wenn kurze Zeichenfolgen verwendet werden.

Alle 4 Kommentare

Prüfen Sie, ob dies durch das Argument leeway . Der Standardwert dafür hat sich kürzlich geändert.

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

Es ist. Das Setzen des Spielraums auf 0 behebt das Problem. Ich würde sagen, es ist eine POLA-Verletzung, wenn kurze Zeichenfolgen verwendet werden.

Ja, ich stimme @AMDmi3 zu . Auch dieses Thema haben wir gerade angesprochen.

Das Problem ist, dass Jinja eine eigenwillige Implementierung hat, die mit der Verwendung als universelle Templating-Engine nicht kompatibel ist.

Ich habe auch dieses Problem gefunden und mehrere Stunden damit verbracht, den Fehler zu finden. Offensichtlich sollten neue Optionen abwärtskompatibel sein und der Standardwert sollte leeway = 0 .
Wer auch immer die neue Option leeway , wird wissen, dass sie existiert und den Wert verwenden, den er möchte. Wer den neuen Parameter nicht kennt, muss seinen Code nicht ändern...

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen