Jinja 2 模板引擎 2

2021-10-24 19:25:51 字數 3938 閱讀 9879

說明:巨集和python中的函式類似,可以傳遞引數。但是不能有返回值,可以把經常用到的**片段放在巨集中,然後把一些不固定的值抽出來作為乙個變數。

巨集的定義:

巨集的呼叫:

}}

示列:1.建立乙個index-1。html檔案

使用者名稱:}

密碼:}

登入:}

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

from flask import flask,render_template

import random

def index():

return render_template('index-1.html')

if __name__ == '__main__':

個人說明:macro類似與python def關鍵字,後面跟函式名括號裡面是引數。也可以不用攜帶引數。像上面的標籤的『size』,'maxlenght',這些也可以根據實際情況加入,也可以在標籤裡面直接在標籤設定引數。說明:乙個巨集可以在不同的模板使用,所以可以聲名在乙個單獨的模板檔案中,需要使用的時候匯入即可,而匯入的方法類似於python中的import。示列:

1.單獨建立乙個巨集檔案

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

使用者名稱:}

密碼:}

登入:}

3.建立***.py檔案

from flask import flask,render_template

import random

def index():

return render_template('index-1.html')

if __name__ == '__main__':

說明:as後面是別名的意思的。使用的時候類似與python的物件.方法名一樣的,還有一種include的用法,就是把整個模組引入到另外乙個模組中。include示列:1.建立乙個模板檔案

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

這是網頁內容

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

from flask import flask,render_template

def index():

return render_template('index-1.html')

if __name__ == '__main__':

注意:使用include 是在templates目錄中尋找相應的檔案,不要使用相對路徑。說明:set和with語句都可以在jinja 2 中定義變數並且賦值,set定義的變數在整個模板範圍內都有效果,with關鍵字在定義變數並賦值的同時,限制了with定義變數的作用範圍。

語法:set

語法:with

}

注意:with定義的變數的作用範圍在和中才會有效,在模組的其他地方引用變數值無效。示列:1.建立乙個index-2.html檔案

}}

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

from flask import flask,render_template

def index():

return render_template('index-2.html')

if __name__ == '__main__':

4.靜態檔案的載入說明:靜態檔案的載入一般需要新建資料夾static,在資料夾下再建立css,js,images 資料夾,在這些資料夾中存放 css ,js,images,同時還需要使用url_for函式。示列:新建資料夾static

1.載入js檔案

2.載入css檔案

5.模板的繼承說明:乙個系統**往往需要統一的結構,這樣看起來比較『整潔』,乙個頁面中都有標題,內容顯示,底部等幾個部分,如果在每乙個頁面中都進行這幾部分的編寫,那麼整個**將會有很多多餘的部份,也不美觀,可以採取模板繼承的方式把相同的部分給提取出來作為乙個基類。1.模板繼承的語法:

2.快的概念模板繼承包含基本模組和子模組,其中基本模組包含了**裡面的基本元素和基本構架,但是裡面一些空或者不完整的塊需要使用子模組來填充。語法:在父模組中

在子模組中

子模板中的**

示列:建立乙個index.html檔案-----為基類

2.在建立乙個base.html檔案-------繼承上面index.html

}

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

from flask import flask,render_template

def hello_world():

return render_template('base.html')

if __name__ == '__main__':

注意:1.在預設情況下,子模組如果實現了父模組定義的bolck,那麼子模組中的內容就會覆蓋掉父模組中的**,如果 想要在子模組中依然保持父模組的**,可以使用}函式來實現。2.如果想要在乙個block中呼叫其他的block中的**,可以使用}來實現。個人理解:include和extends作用類似,但是在與模板的繼承在餘多了靈活性。

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

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

python模板引擎Jinja2基礎

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