Jinja 模板引擎

2021-10-24 17:56:52 字數 3946 閱讀 5449

模板實質上是乙個靜態的包含html語法的全部或片段的文字檔案,也可以包含變數表示的動態部分,使用真實值替換網頁模板的變數,生成對應的資料的html片段。這一過程稱為渲染。flask提供了jinja 2 模板引擎來渲染模板。

1.例項:

1.先建立乙個html文件

2.建立乙個***.py檔案

from flask import flask,render_template     #匯入render_template

def index(): #定義檢視函式

return render_template('index.html') #用render_template渲染模板

if __name__ == '__main__':

1.flask通過render_template()

函式來實現渲染模板,要使用jinja2 模板引擎,需要先導入render_template,在檢視函的return()函式中,render_template函式的首個引數聲名使用哪乙個模板檔案。注意:函式中,首個引數聲名使用哪個靜態檔案,還可以有多個引數。

2.程式會預設在當前資料夾下的template目錄下尋找模板檔案,所以資料夾名稱不能更改。但是,如果要改需也可以。如下:

from flask import flask,render_template     #匯入render_template
使用template_folder關鍵字然後後面跟自定義的檔案路徑名稱。

flask 提供jinja 2模板引擎來渲染模板的同時,還可以將程式中的的引數或者變數值傳遞給指定的模板進行渲染。

示例:

1.建立乙個user.html檔案

2.在建立乙個index.html檔案

3.建立乙個***.py檔案

from flask import flask,render_template     #匯入render_template

def index(): #定義檢視函式

return render_template('user.html') #用render_template渲染模板

def user(username): #定義檢視函式

return render_template('index.html',name=username) #渲染並向模板中傳遞引數

if __name__ == '__main__':

render_template函式第乙個引數指定模板檔案的名稱,第二個引數為可選項,可以為空。第二個引數不為空的話一般用與向模組中傳遞變數。傳遞變數一般以鍵值對方式進行。

模板中接收變數值,需要把變數放在}中,模板中如果要寫注釋,格式為。

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

def index():

title='窗前明月光'

author='李白想婆娘'

return render_template('index.html',**locals()) #使用**locals()方法進行傳遞多個

注意:傳遞引數的時候檢視函式下的變數名要和html文件中的引數傳遞名要相同。

2.模板中if控制語句

在模板引擎中,if 放在

語法:

示列:

1.建立index.html檔案

這是首頁

產生的隨機數無效!

2.建立***.py檔案

from flask import flask,render_template

import random

def index(): #定義檢視函式

randoms=random.randint(0,1) #0-1範圍內的整形數

return render_template('index.html',name=randoms) # 傳遞引數

注意:在模板中盡量少用多層鑲嵌的if...else...語句,往往會因為縮排出現很多的問題,盡量多使用if ...elif...else...的結構,這一系列條件判斷會從上到下以此判斷,如果判斷為真,則執行對應的**塊,後面的條件就會直接忽略。不在執行。

3.模組中的for 迴圈

在模組中使用for 也是和if一樣是放在中

語法:

目標

jinja 2 在for 迴圈中的內建常量

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

示列:

1.建立乙個user.html檔案

商品名稱

商品**

}}

2.建立乙個***.py檔案

from flask import flask,render_template

import random

def index():

good=[,,]

return render_template('user.html',**locals())

if __name__ == '__main__':

注意:通過可以是實現**的鑲嵌,語法和基本一致,但是都要包含在中。

說明:過濾器本質上是乙個轉換函式,有時候不僅需要輸出變數的值,還要把某個變數的值修改後顯示出來,而在模板中不能直接呼叫python中的某些方法。所以可以使用過濾器。

1.與字串相關的過濾器

}

其中,name為變數名,如果name為空,則用none值去替代。

}將字串hell轉換為首字母大寫的目的。

}將字串hello全部轉換為小寫

}

2.與列表相關的過濾器

}

獲得列表中的首個元素

}獲得列表元素中的最後乙個

}獲得列表元素中的個數

}對列表中的元素進行排序

}對列表中的元素合併為字串

3.與數值相關的過濾器

}

四捨五入取整數

}保留小數點後面兩位

}返回絕對值

自定義過濾器

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