jinja2如何删除尾随的换行符

6 浏览
0 Comments

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后面多了一个不需要的空行。我该如何去掉这个空行?

0
0 Comments

问题出现的原因是在使用Jinja2模板引擎时,输出的内容末尾会有多余的换行符。解决方法是在for循环的末尾加上-来去除末尾的换行符。具体的解决方法如下:

将for循环的代码改为以下形式,使用-在for循环的末尾:

{% for key, value in querystring.items() -%}
  {{ key }}: '{{ value }}'
{%- endfor %}

根据测试结果,-必须放在第一个{%之后,而不是最后一个{%之前,才能达到去除换行符的效果。

根据Jinja2的文档,可以在https://jinja.palletsprojects.com/en/latest/templates/#whitespace-control中找到相关的说明。

通过在for循环的第一行的第一个%之前加上-,可以去除添加的行之前的换行符。通过在for循环的最后一行的最后一个%之后加上-,可以去除添加的行之后的换行符。同时使用这两种方式,可以完全去除所有的换行符。如果只使用其中一种方式,只会在每行之间添加一个换行符,而不会在每行之后添加额外的换行符。根据具体需求,可以在endfor之前或之后加上-来控制换行符的数量。

希望这些信息对你有帮助。

0
0 Comments

问题:jinja2如何去除尾随换行符?

在使用jinja2模板时,有时会遇到尾随换行符的问题,即在渲染后的文本中出现一行空白。下面介绍该问题的出现原因以及解决方法。

问题的原因是在jinja2模板中的endfor块的处理方式。默认情况下,jinja2会保留模板中标签之间的所有空白字符,包括换行符。因此,在渲染模板后,如果endfor块之后有换行符,它们将被包含在渲染后的文本中,导致尾随换行符的出现。

解决该问题的方法是使用jinja2的空白控制特性。通过在endfor块的末尾加上-符号,可以告诉jinja2在渲染时去除该块之后的空白字符,包括换行符。

具体而言,将endfor块修改为{% endfor -%}即可实现去除尾随换行符的效果。

如果你在使用jinja2模板时遇到尾随换行符的问题,可以尝试使用以上的解决方法。希望对你有所帮助!

0
0 Comments

问题原因:在使用jinja2模板引擎时,有时会出现末尾有多余换行符的问题。

解决方法:可以通过设置jinja2的环境对象来解决这个问题。具体的做法是设置trim_blocks和lstrip_blocks参数为True。

对于使用Flask框架的用户,可以按照以下步骤解决这个问题:

1. 在Flask的应用对象中设置jinja_env的lstrip_blocks参数为True,即app.jinja_env.lstrip_blocks = True

2. 同样在Flask的应用对象中设置jinja_env的trim_blocks参数为True,即app.jinja_env.trim_blocks = True

如果想要更通用的解决方案,可以在Environment对象中进行设置。具体的做法是创建一个Environment对象,并将trim_blocks和lstrip_blocks参数设置为True,即Environment(trim_blocks=True, lstrip_blocks=True)

通过上述的设置,可以解决jinja2模板引擎在末尾有多余换行符的问题。

0