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.
Baris baru terakhir dilucuti dari output yang diberikan.
>>> 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
>>>
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.
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.