主要包含兩個:
- if/else if /else / endif
- for / endfor
if語句
jinja2 語法中的if語句跟 python 中的 if 語句相似,後面的布林值或返回布林值的表示式將決定**中的哪個流程會被執行:
'/logout'
>logout<
/a>
'/login'
>login<
/a>
過濾器可以被用在 if 語句中:
there are
} comments
there are no comments
}<
/h1>
}<
/p>
<
/div>
}<
/h1>
}<
/p>
<
/div>
變數
描述loop.index
當前迴圈迭代的次數(從 1 開始)
loop.index0
當前迴圈迭代的次數(從 0 開始)
loop.revindex
到迴圈結束需要迭代的次數(從 1 開始)
loop.revindex0
到迴圈結束需要迭代的次數(從 0 開始)
loop.first
如果是第一次迭代,為 true 。
loop.last
如果是最後一次迭代,為 true 。
loop.length
序列中的專案數。
loop.cycle
在一串串行間期取值的輔助函式。見下面示例程式。
},
}
1
, post title
2, second post
}}
odd post title
even second post
過濾器的本質就是函式。有時候我們不僅僅只是需要輸出變數的值,我們還需要修改變數的顯示,甚至格式化、運算等等,而在模板中是不能直接呼叫 python 中的某些方法,那麼這就用到了過濾器。
使用方式:
}
}
在 jinja2 中,過濾器是可以支援鏈式呼叫的,示例如下:
}
字串操作}<
/p>
}<
/p>
}<
/p>
}<
/p>
}<
/p>
}<
/p>
}<
/p>
}<
/p>
}<
/p>
列表操作}<
/p>
}<
/p>
}<
/p>
}<
/p>
}
語句塊過濾
#一大堆文字#
過濾器的本質是函式。當模板內建的過濾器不能滿足需求,可以自定義過濾器。自定義過濾器有兩種實現方式:
重要:自定義的過濾器名稱如果和內建的過濾器重名,會覆蓋內建的過濾器。
需求:新增列表反轉的過濾器
方式一通過呼叫應用程式例項的 add_template_filter 方法實現自定義過濾器。該方法第乙個引數是函式名,第二個引數是自定義的過濾器名稱:
def
do_listreverse
(li)
:# 通過原列表建立乙個新列表
temp_li =
list
(li)
# 將新列表進行返轉
temp_li.reverse(
)return temp_li
'lireverse'
)
方式二
用裝飾器來實現自定義過濾器。裝飾器傳入的引數是自定義的過濾器名稱。
'lireverse'
)def
do_listreverse
(li)
:# 通過原列表建立乙個新列表
temp_li =
list
(li)
# 將新列表進行返轉
temp_li.reverse(
)return temp_li
/>
my_array 原內容:}
/>
my_array 反**}
my_array 原內容:[3, 4, 2, 1, 7, 9]
my_array 反**[9, 7, 1, 2, 4, 3]
在模板中,可能會遇到以下情況:
像遇到這種情況,可以使用 jinja2 模板中的繼承來進行實現
模板繼承是為了重用模板中的公共內容。一般web開發中,繼承主要使用在**的頂部選單、底部。這些內容可以定義在父模板中,子模板直接繼承,而不需要重複書寫。
父模板**:
base.html
頂部選單
底部
子模板**:
需要填充的內容
模板繼承使用時注意點:
不支援多繼承
為了便於閱讀,在子模板中使用extends時,盡量寫在模板的第一行。
不能在乙個模板檔案中定義多個相同名字的block標籤。
當在頁面中使用多個block標籤時,建議給結束標籤起個名字,當多個block巢狀時,閱讀性更好。
flask之jinjia2模板語言
flask jinjia2.py 1 2 flask中的jinjia2模板語言 和django中模板類似 3 1 模板變數 45 2 模板標籤 6 for迴圈遍歷78 910 if.else判斷 1112 13 14.1516 17 18 3 模板繼承,配合模板中定義的block重寫需要改動的部分 ...
flask中jinjia2模板引擎使用詳解4
接上文 for迴圈 和其它程式語言一樣,for用來編輯列表中的項。下面以乙個例子來說明for在flask的jinjia2模板中的使用。建立乙個模板list.html 如下 li li 在code.py中新增url規則 defrenderlist users zhang san li si wang ...
flask中jinjia2模板引擎使用詳解2
接上文 注釋的使用 在jinjia2模板中,使用進行 注釋,如下所示 執行後發現,注釋不會被render出來 去掉空行 兩種方法可以去掉jinjia2模板中的空白行,一是設定jinjia2的環境變數,如下 另一種是通過在模板的邏輯塊中新增 號 h1 hello h1 h1 name is numbe...