Jinja: Некорректное поведение фильтра усечения

Созданный на 3 апр. 2017  ·  4Комментарии  ·  Источник: pallets/jinja

Код:

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

Ожидаемое поведение

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

Фактическое поведение

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

Код шаблона

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

Ваше окружение

  • Версия Python: 3.6.1
  • Версия Jinja: 2.9.5

Самый полезный комментарий

Это. Установка для leeway значения 0 устраняет проблему. Я бы сказал, что это нарушение POLA при использовании коротких струн.

Все 4 Комментарий

Проверьте, не вызвано ли это аргументом leeway . Значение по умолчанию для него недавно изменилось.

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

Это. Установка для leeway значения 0 устраняет проблему. Я бы сказал, что это нарушение POLA при использовании коротких струн.

Да, согласен @ AMDmi3 . Мы просто затронули и эту проблему.

Проблема в том, что у Jinja есть самоуверенная реализация, несовместимая с использованием в качестве движка шаблонов общего назначения.

Я тоже обнаружил эту проблему и потратил несколько часов на поиск ошибки. Очевидно, что новые параметры должны быть обратно совместимы, а значение по умолчанию должно быть leeway = 0 .
Кто бы ни начал использовать новую опцию leeway они будут знать, что она существует, и будут использовать то значение, которое им нравится. Тем, кто не знает о новом параметре, не нужно будет менять свой код ...

Была ли эта страница полезной?
0 / 5 - 0 рейтинги