Jinja: 切り捨てフィルターの誤った動作

作成日 2017年04月03日  ·  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

最も参考になるコメント

です。 余裕を0に設定すると、問題が修正されます。 短い文字列を使用すると、POLA違反になると思います。

全てのコメント4件

これがleeway引数が原因であるかどうかを確認してください。 デフォルト値は最近変更されました。

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

です。 余裕を0に設定すると、問題が修正されます。 短い文字列を使用すると、POLA違反になると思います。

ええ、 @ AMDmi3に同意します。 この問題も発生しました。

問題は、Jinjaが、汎用テンプレートエンジンとしての使用法と互換性のない意見のある実装を持っていることです。

私もこの問題を見つけ、バグを見つけるのに数時間を費やしました。 明らかに、新しいオプションには下位互換性があり、デフォルトはleeway = 0必要があります。
新しいオプションleewayを使い始めると、それが存在することがわかり、好きな値を使用します。 新しいパラメータについて知らない人は、コードを変更する必要はありません...

このページは役に立ちましたか?
0 / 5 - 0 評価