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

Python 从Jinja渲染模板中删除不必要的空白,python,flask,jinja2,Python,Flask,Jinja2,我正在使用curl观看我的web应用程序的输出。当Flask和Jinja渲染模板时,输出中存在大量不必要的空白。它似乎是通过呈现来自Flask WTF和Flask Bootstrap的各种组件而添加的。我可以使用sed,但是有没有办法从Jinja控制它呢?Jinja有多种方法来控制它。它没有美化输出的方法,您必须手动确保所有内容看起来都“不错” 最广泛的解决方案是在env上设置trim_块和lstrip_块 app.jinja_env.trim_blocks = True app.jinja_e

我正在使用
curl
观看我的web应用程序的输出。当Flask和Jinja渲染模板时,输出中存在大量不必要的空白。它似乎是通过呈现来自Flask WTF和Flask Bootstrap的各种组件而添加的。我可以使用
sed
,但是有没有办法从Jinja控制它呢?

Jinja有多种方法来控制它。它没有美化输出的方法,您必须手动确保所有内容看起来都“不错”

最广泛的解决方案是在env上设置
trim_块
lstrip_块

app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True
如果要在文件末尾保留换行符,请设置
strip\u training\u newlines=False

可以使用控制字符修改标记周围的空格的工作方式<代码>-始终删除空白,
+
始终保留空白,覆盖该标记的环境设置。
-
字符可以位于标记的开头或结尾(或两者)以控制该方向的空格,
+
字符仅在标记的开头才有意义

  • {%-if…%}
  • {%-if…-%}
    在前后进行条带处理
  • {%+如果…%}
  • {%+如果…-%}
    在之前保留,在之后删除
  • 请记住,
    {%endif%}
    是单独处理的

控制字符仅适用于您编写的模板。如果包含模板或使用第三方提供的宏,无论他们如何编写,模板都将应用于该零件。

要在块前后折叠空白:

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