Jinja: Perilaku filter terpotong yang salah

Dibuat pada 3 Apr 2017  ·  4Komentar  ·  Sumber: pallets/jinja

Kode:

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

Perilaku yang Diharapkan

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

Perilaku Sebenarnya

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

Kode Template

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

Lingkungan Anda

  • Versi Python: 3.6.1
  • Versi Jinja: 2.9.5

Komentar yang paling membantu

Dia. Menyetel kelonggaran ke 0 memperbaiki masalah. Saya akan mengatakan itu pelanggaran POLA saat menggunakan string pendek.

Semua 4 komentar

Periksa apakah ini disebabkan oleh argumen leeway . Nilai default untuk itu berubah baru-baru ini.

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

Dia. Menyetel kelonggaran ke 0 memperbaiki masalah. Saya akan mengatakan itu pelanggaran POLA saat menggunakan string pendek.

Ya saya setuju @AMDmi3 . Kami baru saja mencapai masalah ini juga.

Masalahnya adalah Jinja memiliki implementasi opini yang tidak sesuai dengan penggunaan sebagai mesin templating tujuan umum.

Saya juga menemukan masalah ini dan menghabiskan beberapa jam untuk menemukan bug. Jelas opsi baru harus kompatibel ke belakang dan defaultnya adalah leeway = 0 .
Siapa pun yang mulai menggunakan opsi baru leeway mereka akan tahu opsi itu ada dan akan menggunakan nilai yang mereka inginkan. Mereka yang tidak tahu tentang parameter baru tidak perlu mengubah kode mereka...

Apakah halaman ini membantu?
0 / 5 - 0 peringkat