flask模板應用-空白控制 --

模板應用實踐

空白控制

在實際輸出的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輸出,由於多餘的空白並不影響瀏覽器的解析
相關文章
相關標籤/搜索