我正在使用curl
来观看我的网络应用的输出。当Flask和Jinja渲染模板时,输出中会有很多不必要的空白区域。它似乎是通过渲染Flask-WTF和Flask-Bootstrap的各种组件来添加的。我可以使用sed
删除它,但有没有办法从Jinja控制它?
答案 0 :(得分:44)
Jinja有多种方式control whitespace。它没有有一种美化输出的方法,你必须手动确保一切看起来都很“漂亮”。
最广泛的解决方案是在环境中设置trim_blocks
和lstrip_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