Jinja 2模板引擎

2021-10-03 13:29:27 字數 4309 閱讀 6404

flask 提供了jiaja 2模板引擎渲染模板,下面逐步介紹其模板渲染機制。

index.html

lang

="en"

>

>

charset

="utf-8"

>

>

這是首頁中文字 !title

>

>

這是首頁中文字! h1

>

head

>

>

body

>

html

>

user.html

lang

="en"

>

>

charset

="utf-8"

>

>

這是使用者中心 title

>

>

這是使用者中心!h1

>

head

>

>

body

>

html

>

from flask import flask, render_template

'''控制模組

''''/'

)def

index()

:return render_template(

'index.html'

)'/user/'

)def

user

(name)

:return render_template(

'user.html'

, name)

if __name__ ==

'__main__'

:5000

, debug=

true

)'''

預設情況下,flask 在程式檔案中的templates子資料夾中尋找模板。

render_template函式的第乙個引數是模板的檔名,隨後的引數都是鍵值對。

表示模板中變數對應的真實值。

}起到了佔位符的作用

'''

flask 通過render_template()函式來實現模板的渲染。要使用jinja2模板引擎,需要使用from flask import render_template 命令匯入render_template函式。

lang

="en"

>

>

charset

="utf-8"

>

>

這是使用者中心 title

>

>

歡迎您:}h1

>

head

>

>

body

>

html

>

'/'

)def

index()

title =

'python的鍵值對'

author =

'tom_jack'

return render_template(

'index.html'

, var1=title, var2=author)

>

}>

}body

>

r如果檢視函式中有多個變數值都需要傳遞給模板,可以使用 **locals()方法,例如:

def

index()

#return render_template("index,html")

title =

'python的鍵值對'

author =

'tom_jack'

return render_template(

'index.html',**

locals()

)#渲染模板並傳值

這時候index.html中替換為}

}。

index.html

lang

="en"

>

>

charset

="utf-8"

>

>

這是首頁中文字 !title

>

>

這是首頁中文字! h1

>

head

>

>

>

產生隨機數有效!h1

>

>

產生的隨機數無效!h1

>

body

>

html

>

if語句使用示例2:

from flask import flask, render_template

import random

'''控制模組

''''/'

)def

index()

: value = random.randint(0,

1)return render_template(

'index.html'

, name=value)

if __name__ ==

'__main__'

:5000

, debug=

true

)

index.html**

lang

="en"

>

>

charset

="utf-8"

>

>

這是首頁中文字 !title

>

>

這是首頁中文字! h1

>

head

>

>

>

恭喜,您抽得了一等獎 h1

>

>

恭喜,抽得了二等獎!h1

>

>

恭喜,抽到了三等獎 h1

>

body

>

html

>

m模板中的控制語句之for語句定義如下:

目標

jinja2中for迴圈內建常量。

注意不可以使用continue和break表示式來控制迴圈的執行。

jinja 2模板中for語句使用示例: shop.html

lang

="en"

>

>

charset

="utf-8"

>

>

titletitle

>

head

>

>

>

>

>

商品名稱th

>

>

商品**th

>

thead

>

>

charset

="utf-8"

>

>

>

} >

} tr

>

tbody

>

table

>

body

>

html

>

python**為:

from flask import flask, render_template

import random

import time

'''控制模組

''''/'

)def

index()

: goods =[,

,,]return render_template(

'shop.html',**

locals()

)if __name__ ==

'__main__'

:5000

, debug=

true

)

可以在模板中使用if條件判斷句實現**額巢狀,其語法與python語法基本一致但是必須包含在內部。

Jinja2模板引擎

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

Jinja 2 模板引擎 2

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

python模板引擎Jinja2基礎

官方文件 分隔符 delimiters 語句 statements 列印模板輸出的表示式 expressions 注釋 行語句 line statements 變數 variables foo.bar foo bar 過濾器 filters title striptags name 過濾器列表 測試...