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) 来参数化构建作业中的一些文件,我注意到它正在输出没有换行符的文件,所以当我附加到它们时,我在一行上压扁了几行。 起初我打算用 shinto-cli 打开一个问题,直到我浏览了源代码,然后我自己尝试了 python REPL 中的基本 jinja2 模板,并意识到这只是 jinja2 的默认行为。

我可以用 shinto-cli 打开一个问题,要求他们将 keep_trailing_newline=True 选项添加到他们所有的 Environment 调用中。

所有2条评论

keep_trailing_newline=True传递给Environmenthttp :

好的,感谢您的回复,我不知道这是一个选项,但似乎这应该是默认设置。 假设用户想要以与模板语言无关的意外方式修改输入似乎很奇怪。 事实上,我什至打开这个问题的原因是因为我使用 shinto-cli (https://github.com/istrategylabs/shinto-cli) 来参数化构建作业中的一些文件,我注意到它正在输出没有换行符的文件,所以当我附加到它们时,我在一行上压扁了几行。 起初我打算用 shinto-cli 打开一个问题,直到我浏览了源代码,然后我自己尝试了 python REPL 中的基本 jinja2 模板,并意识到这只是 jinja2 的默认行为。

我可以用 shinto-cli 打开一个问题,要求他们将 keep_trailing_newline=True 选项添加到他们所有的 Environment 调用中。

此页面是否有帮助?
0 / 5 - 0 等级