从 Jinja 呈现的模板中删除不必要的空格

Remove unnecessary whitespace from Jinja rendered template

我正在使用 curl 观看我的网络应用程序的输出。

当 Flask 和 Jinja 渲染模板时,输出中有很多不必要的白色 space。
它似乎是通过渲染来自 Flask-WTF 和 Flask-Bootstrap.

的各种组件添加的

我可以使用 sed 删除它,但是有没有办法从 Jinja 控制它?

Jinja 有多种方式 control whitespace。它没有美化输出的方法,您必须手动确保一切看起来“不错”。

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

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

如果要在文件末尾保留一个换行符,设置strip_trailing_newlines = False

您可以使用控制字符来修改标签周围空白的工作方式。 - 总是删除空格,+ 总是保留它,覆盖该标签的 env 设置。 - 字符可以位于标签的开头或结尾(或两者)以控制该方向的空白,+ 字符仅在标签开头才有意义。

  • {%- if ... %} 条在
  • 之前
  • {%- if ... -%}前后条
  • {%+ if ... %}保留在[​​=43=]之前
  • {%+ if ... -%} 之前保留,之后删除
  • 记住{% endif %}是分开对待的

控制字符只适用于模板写的。如果您包含模板或使用来自第三方的宏,无论他们如何写,该模板将适用于该部分。

折叠块前后的空白:

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