在實際輸出的HTML文件中,模板中的jinja2語句、表達式和註釋會保留移除後的空行。瀏覽器
例以下面的代碼:app
{% set user.age = 23 %}
{% if urer.age > 10 %}
<i>{{ user.name }} can play the game</i>
{% if user.name >20 %}
<i>{{ user.name }}can paly the game only 10 minutes! </i>
{% endif %}
jinja2語句中的代碼縮進並非必須的,添加縮進能夠增長可讀性。對象
實際輸出的HTML代碼:
<i>{{ user.name }} can play the game</i>
<i>{{ user.name }}can paly the game only 10 minutes! </i>
若是想再渲染時自動去掉空行,能夠在定界符內側添加減號。好比{%-endfor%}會移除該語句前的空白,同理,在右邊的定界符內側添加減號將移除該語句後的空白:繼承
{% set user.age = 23 -%}
{% if urer.age > 10 -%}
<i>{{ user.name }} can play the game</i>
{% if user.name >20 -%}
<i>{{ user.name }}can paly the game only 10 minutes! </i>
{%- endif %}
如今輸出的HTML代碼以下:ip
<i>{{ user.name }} can play the game</i>
<i>{{ user.name }}can paly the game only 10 minutes! </i>
除了在模板中使用減號來控制空白,也能夠使用模板環境對象提供的trim_blocks和lstrip_blocks屬性設置,前者用來刪除jinja2語句後的第一個空行,後者則用來刪除jinja2語句所在行以前的空格和製表符(tab):模板
app.jinja_env.trim_blocks = Truejinja2
app.jinja_env.lstrip_blocks = True渲染
trim_blocks中的block指的是使用{% … %}定界符的代碼塊,與模板繼承中的塊無關。im
須要注意,宏內的空白行爲不受trim_blocks和lstrip_blocks屬性控制,咱們需手動設置,例如:註釋
{% macro qux(amount=1) %} {% if amount ==1 -%} I am qux. {% elif amount > 1 -%} {% endmacro %}事實上,咱們沒有必要嚴格控制HTML輸出,由於多餘的空白並不影響瀏覽器的解析