模板實質上是乙個靜態的包含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.與字串相關的過濾器
}2.與列表相關的過濾器其中,name為變數名,如果name為空,則用none值去替代。
}將字串hell轉換為首字母大寫的目的。
}將字串hello全部轉換為小寫
}
}
獲得列表中的首個元素
}獲得列表元素中的最後乙個
}獲得列表元素中的個數
}對列表中的元素進行排序
}對列表中的元素合併為字串
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 ...