【发布时间】:2016-06-16 22:59:24
【问题描述】:
我正在使用curl 来查看我的网络应用程序的输出。当 Flask 和 Jinja 渲染模板时,输出中有很多不必要的空白。它似乎是通过渲染来自 Flask-WTF 和 Flask-Bootstrap 的各种组件来添加的。我可以使用sed 剥离它,但是有没有办法从 Jinja 控制它?
【问题讨论】:
我正在使用curl 来查看我的网络应用程序的输出。当 Flask 和 Jinja 渲染模板时,输出中有很多不必要的空白。它似乎是通过渲染来自 Flask-WTF 和 Flask-Bootstrap 的各种组件来添加的。我可以使用sed 剥离它,但是有没有办法从 Jinja 控制它?
【问题讨论】:
Jinja 有多种方式来control whitespace。它没有有办法美化输出,你必须手动确保一切看起来“不错”。
最广泛的解决方案是在环境中设置trim_blocks 和lstrip_blocks。
app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True
如果要在文件末尾保留换行符,请设置strip_trailing_newlines = False。
您可以使用控制字符来修改标签周围空格的工作方式。 - 总是删除空格,+ 总是保留它,覆盖该标签的环境设置。 - 字符可以放在标记的开头或结尾(或两者)以控制该方向的空白,+ 字符仅在标记开头才有意义。
{%- if ... %} 脱之前{%- if ... -%}前后条带{%+ if ... %} 保留之前{%+ if ... -%} 前保留后剥离{% endif %}是分开处理的控制字符只适用于你编写的模板。如果您包含模板或使用来自第 3 方的宏,但他们编写的模板将适用于该部分。
【讨论】:
折叠块前后的空白:
{%- if form.message -%} //trims before
{{ form.message }}
{%- endif -%} // trims after
【讨论】: