Flask中的Jinjia2的使用(二)

2021-09-23 01:40:58 字數 3378 閱讀 7326

主要包含兩個:

- 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...