Jinja2模板與模板繼承

2021-09-24 00:06:43 字數 2169 閱讀 3318

>

}h1>

jinja2 模版中的變數**塊可以是任意 python 型別或者物件,只要它能夠被 python 的 str() 方法轉換為乙個字串就可以,比如,可以通過下面的方式顯示乙個字典或者列表中的某個元素:

}}

'/'

)def

index()

:# 往模板中傳入的資料

my_str =

'hello word'

my_int =

10 my_array =[3

,4,2

,1,7

,9] my_dict =

return render_template(

'temp_demo1.html'

, my_str=my_str,

my_int=my_int,

my_array=my_array,

my_dict=my_dict

)

lang

="en"

>

>

charset

="utf-8"

>

>

titletitle

>

head

>

>

我的模板html內容

/>

}/>

}/>

}/>

}body

>

html

>

過濾器的本質就是函式。有時候我們不僅僅只是需要輸出變數的值,我們還需要修改變數的顯示,甚至格式化、運算等等,而在模板中是不能直接呼叫 python 中的某些方法,那麼這就用到了過濾器。

使用方式:

}

}

在 jinja2 中,過濾器是可以支援鏈式呼叫的,示例如下:

}

}<

/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

模板繼承是為了重用模板中的公共內容。一般web開發中,繼承主要使用在**的頂部選單、底部。這些內容可以定義在父模板中,子模板直接繼承,而不需要重複書寫。

頂部選單

底部

需要填充的內容

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模板引擎

檢視函式的主要作用是生成請求的響應,這是最簡單的請求。實際上,檢視函式有兩個作用 處理業務邏輯和返回響應內容。在大型應用中,把業務邏輯和表現內容放在一起,會增加 的複雜度和維護成本。本節學到的模板,它的作用即是承擔檢視函式的另乙個作用,即返回響應內容。使用模板的好處 兩個概念 渲染模版函式 使用 變...

Jinja 2 模板引擎 2

說明 巨集和python中的函式類似,可以傳遞引數。但是不能有返回值,可以把經常用到的 片段放在巨集中,然後把一些不固定的值抽出來作為乙個變數。巨集的定義 巨集的呼叫 示列 1.建立乙個index 1。html檔案 使用者名稱 密碼 登入 2。建立乙個 py檔案 from flask import ...