jinja2如何删除尾随换行符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jinja2如何删除尾随换行符相关的知识,希望对你有一定的参考价值。
我正在使用jinja 2输出一个yaml文件,但似乎无法摆脱尾随的换行符和for循环的结束。如下
- request:
path: {{ path }}
headers:
origin: 'somedomain.com'
user-agent: 'agent'
referer: 'some.domain.com'
authority: 'somedomain.com'
querystring:
{% for key, value in querystring.items() -%}
{{ key }}: '{{ value }}'
{% endfor %}
response:
content:
file: {{ content }}
给我输出:
- request:
path: /some/path
headers:
origin: 'somedomain.com'
user-agent: 'agent'
referer: 'somedomain.com'
authority: 'somedomain.com'
querystring:
postcode: 'xxxxxx'
houseNo: '55'
response:
content:
file: address.json
在houseNo之后还有一个不需要的空白行。我如何摆脱这条线?
答案
更改循环以从输出的顶部和底部去除空白区域(注意for循环关闭时的额外“ - ”):
{% for key, value in querystring.items() -%}
{{ key }}: '{{ value }}'
{%- endfor %}
在我的测试中(使用https://github.com/abourguignon/jinja2-live-parser),“ - ”必须在第一个{%
之后,而不是在最后一个之前达到你所要求的。
文件:http://jinja.pocoo.org/docs/dev/templates/#whitespace-control
另一答案
我认为你可以使用whitespace control功能摆脱它。因此,我会将endfor
块修改为{% endfor -%}
看看是否这样!
另一答案
我找到了解决这个问题的方法:
- request:
path: {{ path }}
headers:
origin: 'somedomain.com'
user-agent: 'agent'
referer: 'some.domain.com'
authority: 'somedomain.com'
querystring: >-
{% for key, value in querystring.items() -%}
{{ key }}: '{{ value }}'
{% endfor %}
response:
content:
file: {{ content }}
>
,|
:“clip”:保持换行,删除尾随空白行。>-
,|=
:“strip”:删除换行符,删除尾随空白行。>+
,|+
:“保持”:保持换行,保持尾随空行。
史蒂夫贝内特的帖子:In YAML, how do I break a string over multiple lines?
另一答案
对于那些使用Flask来到这里的人来说,这些线路对我有用:
app = Flask(__name__)
app.jinja_env.lstrip_blocks = True
app.jinja_env.trim_blocks = True
另一答案
您可以禁止渲染以下行:
<% for ... %>
<% endfor %>
<% if ... %>
<% endif %>
通过在jinja2环境中设置trim_blocks = True和lstrip_blocks = True。请参阅下面的示例,来自their docs的信息
context = {'querystring': querystring, 'path': path, 'content': content}
jinja_env = jinja2.Environment(loader=jinja2.FileSystemLoader('templates/'), trim_blocks=True, lstrip_blocks=True)
print(jinja_env.get_template('my_template.yaml').render(context))
以上是关于jinja2如何删除尾随换行符的主要内容,如果未能解决你的问题,请参考以下文章