Jinja: 末尾の改行は、レンダリング時にテンプレートから削除されます。

作成日 2018年05月02日  ·  2コメント  ·  ソース: pallets/jinja

予想される行動

改行(\ n)文字で終わるファイルをレンダリングする場合、レンダリングされた出力も改行文字で終わると思います。 テキストファイルを末尾の改行で終了することは、UNIXライクなシステムの標準的な規則です。

実際の動作

最後の改行は、レンダリングされた出力から削除されます。

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

あなたの環境

  • Pythonバージョン:2.7.14 +(Debianバスター/テスト)
  • Jinjaバージョン:2.10(pip経由)

最も参考になるコメント

わかりました、応答のおかげで、私はそれがオプションであることに気づいていませんでした、しかしこれがデフォルトであるべきであるように思われます。 ユーザーがテンプレート言語とは関係のない予期しない方法で入力を変更したいと考えるのは奇妙に思えます。 実際、私がこの問題を開いている理由は、ビルドジョブでいくつかのファイルをパラメーター化するためにshinto-cli(https://github.com/istrategylabs/shinto-cli)を使用しているためです。改行なしでファイルを出力していたので、それらに追加すると、1行に1行が押しつぶされます。 最初は、ソースを一瞥するまでshinto-cliで問題を開くつもりでしたが、Python REPLから基本的なjinja2テンプレートを自分で試したところ、これが単なるデフォルトのjinja2の動作であることがわかりました。

shinto-cliで問題を開いて、すべての環境呼び出しにkeep_trailing_newline = Trueオプションを追加するように依頼できます。

全てのコメント2件

keep_trailing_newline=TrueEnvironment渡します: http

わかりました、応答のおかげで、私はそれがオプションであることに気づいていませんでした、しかしこれがデフォルトであるべきであるように思われます。 ユーザーがテンプレート言語とは関係のない予期しない方法で入力を変更したいと考えるのは奇妙に思えます。 実際、私がこの問題を開いている理由は、ビルドジョブでいくつかのファイルをパラメーター化するためにshinto-cli(https://github.com/istrategylabs/shinto-cli)を使用しているためです。改行なしでファイルを出力していたので、それらに追加すると、1行に1行が押しつぶされます。 最初は、ソースを一瞥するまでshinto-cliで問題を開くつもりでしたが、Python REPLから基本的なjinja2テンプレートを自分で試したところ、これが単なるデフォルトのjinja2の動作であることがわかりました。

shinto-cliで問題を開いて、すべての環境呼び出しにkeep_trailing_newline = Trueオプションを追加するように依頼できます。

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