Jinja2語法小記

2021-09-08 14:20:34 字數 3163 閱讀 1660

jinja2模板中文文件

表示式}

用於裝載字串、變數、函式呼叫等語句

用於裝載控制語句,比如if判斷、for迴圈等注釋}

用於裝載乙個注釋,模板渲染的時候會被忽略掉

在模板中,我們可以使用「.」獲取變數的屬性

user =

如果user為傳入模板中的字典變數,則我們可通過"."獲取它的鍵值。

eg:user.username

user.username等價於user[『username』]

我們可以用set標籤在模板中定義變數

使用endset宣告結束

過濾器(filter)是一些可以用來修改和過濾特殊變數值的函式。

過濾器和變數用乙個豎線「|」(管道符號)隔開,需要引數的過濾器可以像函式一樣使用括號傳遞

eg: 對乙個movies列表使用length過濾器獲取其長度

movies|length
下面是jinja2常用的內建過濾器

過濾器

說明default(value,default_value,boolean=false)

設定預設值,預設值作為引數傳入,別名為d

escap(s)

轉義html文字,別名為e

first(seq)

返回序列的第乙個元素

last(seq)

返回列表的最後乙個元素

length(object)

返回變數的長度

safe(value)

將變數標記為安全,避免轉義

wordcount(s)

計算單詞數量

過濾器函式的第乙個引數表示被過濾的變數值(value)或字串(s),即豎線符號左側的值,其他引數可以使用括號傳入

測試器主要用來判斷乙個值是否滿足某種變數型別,返回布林值(true or false)的特殊函式

語法為:**if…is…

jinja2常用內建測試器

測試器

說明callable(object)

判斷物件是否可呼叫

defined(value)

判斷變數是否已定義

none(value)

判斷變數是否為none

number(value)

判斷變數是否為數字

string(value)

判斷變數是否為字串

sequence(value)

判斷變數是否為序列,比如字串、列表、元組

iterable(value)

判斷變數是否可迭代

判斷變數是否是匹配物件,比如字典

smeas(value,other)

判斷變數與other是否指向相同的記憶體位址

判斷foo和bar所以指向的記憶體位址是否相同

在jinja2中,語句使用標識

在語句結束的地方,必須新增結束標籤

} - }

不可使用break和continue控制迴圈的執行

i am qux.

we are qux.

就像從python模組中匯入函式一樣,我們可以使用import匯入巨集

ps:預設情況下,使用include匯入乙個區域性模板會傳遞上下文到區域性模板中,但使用import卻不會

模板繼承允許我們構建乙個包含站點共同元素的基本模板"骨架",並定義子模版可以覆蓋的塊

基模板 base.html

** 在基模板中定義的塊(block),可以讓子模版通過定義同名的塊來執行繼承操作 **

塊的開始和結束分別使用block和endblock標籤,不同的塊允許巢狀

以下示例**中使用head、title、styles、content、footer和scripts劃分了不同的標籤塊

>

>

charset

="utf-8"

>

>

template - helloflasktitle

>

head

>

>

>

>

href

="}"

>

homea

>

li>

ul>

>

main

>

>

footer

>

body

>

html

>

子模版 index.html

>

templateh1

>

>

>

href

="}"

>

watchlista

>

li>

>

filter: }li

>

>

global: }li

>

>

test: i am baz.li

>

>

macro: }li

>

ul>

*** 如需要向基模板中最佳內容,可以使用jinja2的super()函式 ***

如向基模板的styles塊追加一行樣式

}

參考:

Jinja2語法自動補全配置

步驟一 為了避免和原先其它配置相混亂,方便以後的新增及檢視,我們需要建立自己的分組。在file settings editor下找到live templates,點選右側 選項,接著選擇 2.templates group.選項新建乙個分組,並將其命名為 jinja2 完成後左側會顯示名為 jinj...

Jinja 2模板引擎

flask 提供了jiaja 2模板引擎渲染模板,下面逐步介紹其模板渲染機制。index.html lang en charset utf 8 這是首頁中文字 title 這是首頁中文字 h1 head body html user.html lang en charset utf 8 這是使用者中...

Jinja2基本總結

裝載乙個變數,模板渲染的時候,會使用傳進來的同名引數這個變數代表的值替換掉。裝載乙個控制語句。裝載乙個注釋,模板渲染的時候會忽視這中間的值。1 在模板中新增變數,可以使用 set 語句。之後就可以在頁面檔案中使用name這個變數了。在解釋性語言中,變數的型別時執行時確定的,因此,這裡的變數可以賦任何...