Jinja: Trailing baris baru dihapus dari template saat rendering.

Dibuat pada 2 Mei 2018  ·  2Komentar  ·  Sumber: pallets/jinja

Perilaku yang Diharapkan

Saat merender file yang diakhiri dengan karakter baris baru (\n), saya berharap bahwa output yang diberikan juga akan diakhiri dengan karakter baris baru. Ini adalah konvensi standar pada sistem mirip UNIX untuk mengakhiri file teks dengan baris baru tambahan.

Perilaku Sebenarnya

Baris baru terakhir dilucuti dari output yang diberikan.

Contoh

>>> c
u'foo is {{ foo }}\nquux is {{ quux }}\nasdf\n'
>>> t = jinja2.Template(c)
>>> t.render(foo="bar", quux="baz")
u'foo is bar\nquux is baz\nasdf'
>>> s = t.stream()
>>> s.next()
u'foo is \nquux is \nasdf'
>>> s.next()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ifreeman/.local/lib/python2.7/site-packages/jinja2/environment.py", line 1271, in __next__
    return self._next()
StopIteration
>>>

Lingkungan Anda

  • Versi Python: 2.7.14+ (Penghancur/pengujian Debian)
  • Versi Jinja: 2.10 (melalui pip)

Komentar yang paling membantu

Oke, terima kasih atas tanggapannya, saya tidak menyadari bahwa itu adalah opsi, tetapi sepertinya ini harus menjadi default. Tampaknya aneh untuk menganggap pengguna ingin mengubah input dengan cara yang tidak terduga yang tidak ada hubungannya dengan bahasa template. Faktanya, alasan saya bahkan membuka masalah ini adalah karena saya menggunakan shinto-cli (https://github.com/istrategylabs/shinto-cli) untuk membuat parameter beberapa file dalam pekerjaan build, dan saya perhatikan itu sedang mengeluarkan file tanpa baris baru, jadi ketika saya menambahkannya, saya memiliki garis yang disatukan pada satu baris. Pada awalnya saya akan membuka masalah dengan shinto-cli sampai saya melihat melalui sumbernya, dan kemudian mencoba template jinja2 dasar dari python REPL sendiri dan menyadari ini hanya perilaku jinja2 default.

Saya dapat membuka masalah dengan shinto-cli untuk meminta mereka menambahkan opsi keep_trailing_newline=True ke semua panggilan Lingkungan mereka.

Semua 2 komentar

Lewati keep_trailing_newline=True ke Environment : http://jinja.pocoo.org/docs/api/#jinja2.Environment

Oke, terima kasih atas tanggapannya, saya tidak menyadari bahwa itu adalah opsi, tetapi sepertinya ini harus menjadi default. Tampaknya aneh untuk menganggap pengguna ingin mengubah input dengan cara yang tidak terduga yang tidak ada hubungannya dengan bahasa template. Faktanya, alasan saya bahkan membuka masalah ini adalah karena saya menggunakan shinto-cli (https://github.com/istrategylabs/shinto-cli) untuk membuat parameter beberapa file dalam pekerjaan build, dan saya perhatikan itu sedang mengeluarkan file tanpa baris baru, jadi ketika saya menambahkannya, saya memiliki garis yang disatukan pada satu baris. Pada awalnya saya akan membuka masalah dengan shinto-cli sampai saya melihat melalui sumbernya, dan kemudian mencoba template jinja2 dasar dari python REPL sendiri dan menyadari ini hanya perilaku jinja2 default.

Saya dapat membuka masalah dengan shinto-cli untuk meminta mereka menambahkan opsi keep_trailing_newline=True ke semua panggilan Lingkungan mereka.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat