从Jinja渲染模板中删除不必要的空格

时间:2016-03-03 14:42:31

标签: python flask jinja2

我正在使用curl来观看我的网络应用的输出。当Flask和Jinja渲染模板时,输出中会有很多不必要的空白区域。它似乎是通过渲染Flask-WTF和Flask-Bootstrap的各种组件来添加的。我可以使用sed删除它,但有没有办法从Jinja控制它?

2 个答案:

答案 0 :(得分:44)

Jinja有多种方式control whitespace。它没有有一种美化输出的方法,你必须手动确保一切看起来都很“漂亮”。

最广泛的解决方案是在环境中设置trim_blockslstrip_blocks

app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True

如果您想在文件末尾保留换行符,请设置strip_trailing_newlines = False

您可以使用控制字符来修改块周围的空白的工作方式。 -始终删除标记之前和之后的空格,+始终保留它,覆盖该块的env设置。字符可以位于块的开头或结尾(或两者),以控制该方向的空白。

{%- if ... %} strips before
{%+ if ... %} preserves before
{%+ if ... -%} preserves before and strips after
remember that `{% endif %}` is treated separately

请注意,控制字符仅适用于编写的模板。如果您包含模板或使用第三方的宏,但他们编写的模板将适用于该部分。

答案 1 :(得分:0)

正在删除Jinja模板中的空格...

davidism的答案很好,但我认为在示例前后添加修剪空白的示例会很有用:

{%- if form.message -%} //trims before
   {{ form.message }}
{%- endif -%} // trims after