前端需要知道的jinja2模板引擎知識

2021-08-07 14:56:48 字數 3134 閱讀 5760

參考

}——訪問變數或變數的屬性

——注釋

——匯入另外乙個模板到當前模板中

——匯入模板,與上面的有部分不同

——繼承模板

}——訪問static資料夾中的檔案

建立乙個包含有所有公共元素的頁面基本骨架,在子模板中可以重用這些公用的元素。

//我們首先寫乙個名為"base.html"的模板,它包含下面的內容:

lang="en">

xmlns="">

rel="stylesheet"

href="style.css" />

- my webpagetitle>

head>

id="content">

div>

id="footer">

href="">youa>.

div>

body>

在這個模板中有很多』block』, 這些block中間的內容,我們將會在子模板中用其它內容替換。

//我們再寫乙個名為"child.html"的模板,內容如下:

index

}type="text/css">

.important

style>

indexh1>

class="important">

welcome on my awsome homepage.

p>

——這個模板將繼承base.html.

在隨後的內容中包含了很多跟base.html中相同的block,如title,content,這些block中的內容將會替換 base.html的內容後輸出.

:extends模板名稱的寫法依賴於此模板使用的模板載入器, 比如如果要使用filesystemloader,你可以在模板檔名中加入檔案的資料夾名,如:在base.html中,我們定義了,這個block在子模板中沒有被重定義,那麼jinja會直接使用父模板中的內容輸出。

同乙個模板中不能定義名稱相同的block。

如果你要在模板中多次列印同乙個block,可以用self變數加上block的名字:

title>

}h1>

如果要在子模板中重寫父模板的block中列印被重寫的block的內容,呼叫super關鍵字。

... 

}

你可以傳遞python的變數給模板,用來替換模板中的標記。這些變數可以是任何python物件。在模板中可以直接操作傳入的變數物件,也可以 訪問這些變數的屬性。

訪問變數屬性有兩種方式,一種是用」obj.attr」的方式,另一種是類似字典的方式:」obj[『attr』]」.

}}

注意,上面的}是jinja的用來列印變數標記。如果要在其它標籤中訪問變數,則不能在變數名旁邊加花括號。

jinja中的控制標記包括:條件判斷標記(if/elif/else),迴圈控制(for-loop),另外還有macro(巨集)和上文中提到 的block。

for

//for 迴圈列印乙個序列,例如: 

membersh1>

}li>

ul>

在迴圈內部,你可以訪問一些特殊的變數

variable

description

loop.index

當前迭代的索引,從1開始算

loop.index0

當前迭代的索引,從0開始算

loop.revindex

相對於序列末尾的索引,從1開始算

loop.revindex0

相對於序列末尾的索引,從0開始算

loop.first

相當於loop.index == 1

loop.last

相當於loop.index == len(seq) - 1

loop.length

序列的長度

loop.cycle

是乙個幫助性質的函式,可以接受兩個字串引數,如果當前迴圈索引是偶數,則顯示第乙個字串,是奇數則顯示第二個字串。它常被在**中用來用不同的背景色區分相鄰的行

class="

}">

}li>

需要注意的是,jinja的迴圈不支援break和continue標記。你可以對需要迭代的sequence使用過濾器來達到與break和 continue相同的目的。

//下面的例子中,如果user.hidden屬性為true的則continue 

}li>

jinja的for語句有乙個和python相同的用法,那就是「else』:當無迴圈時顯示else中的內容,如下例:

}li>

no users foundem>

li>

ul>

if

if語句用來在jinja中做比較判斷,比較常見的用法是判斷乙個變數是否已定義,是否非空,是否為true

}li>

ul>

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