Jinja2基本總結

2021-10-07 19:02:43 字數 2957 閱讀 3512

}:裝載乙個變數,模板渲染的時候,會使用傳進來的同名引數這個變數代表的值替換掉。

:裝載乙個控制語句。

:裝載乙個注釋,模板渲染的時候會忽視這中間的值。

1)在模板中新增變數,可以使用(set)語句。

之後就可以在頁面檔案中使用name這個變數了。在解釋性語言中,變數的型別時執行時確定的,因此,這裡的變數可以賦任何型別的值。

上面的語句建立的是全域性變數,從定義之後的檔案部分中都可以訪問 。

2)區域性變數

可以使用with語句來建立乙個內部的作用域,將set語句放在其中,這樣建立的變數只在with**塊中才有效。

}

這樣,foo變數就只能在with標籤間可以使用。

控制語句都是放在中,並且有乙個語句來進行結束。

1:if語句

kenny is sick.

you killed kenny! you bastard!!!

kenny looks okay --- so far

2:for迴圈

1)普通用法

2)遍歷字典

}}

3)在迴圈中加入else

4)jinja2中for迴圈內建常量

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

~號運算子:拼接多個字串,比如}將返回helloworld。

jiaja2模版最重要的部分——巨集

巨集相當於乙個搭建好的頁面一部分,可以被引入,可以往巨集傳遞引數。可以將一些經常用到的**片段放到巨集中,然後把一些不固定的值抽取出來當成乙個變數,在使用巨集時傳遞引數,從而將巨集渲染成為頁面的一部分。

比如:定義乙個input標籤巨集

在其它地方使用這個巨集快速建立出符合要求的input標籤:

}

}

1)頁面檔案中匯入巨集——import

在開發中,會將一些常用的巨集單獨放在乙個檔案中,在需要使用的時候,再從這個檔案中進行匯入。

import語句的用法跟python中的import類似,可以直接import…as…,也可以from…import…或者from…import…as…。

//匯入巨集檔案

username

} //使用巨集

password}}

匯入模板並不會把當前上下文中的變數新增到被匯入的模板中,我們可以在匯入的時候使用with context 把上下文傳進去:

2)巨集檔案中引用其它巨集——include

include語句可以把乙個模板引入到另外乙個模板中,類似於把乙個模板的**copy到另外乙個模板的指定位置。

body

七:模版檔案的繼承

模板可以繼承,通過繼承可以把模板中許多重複出現的元素抽取出來,放在父模板中,並且父模板通過定義block給子模板開乙個口,子模板根據需要,再實現這個block進行具體內容定義。

比如:父模版base.html如下:

然後定義子模版,對父模板中的block部分進行覆蓋書寫:

//1:繼承父模板

index//2:書寫title block

//3:書寫head block

}//呼叫父模板中的內容,如果不呼叫,則此處會被子模板中書寫的內容覆蓋掉

//4:書寫content block

welcome to my awesome homepage.

另外:模板檔案中對block內容的呼叫,可以使用 self.blockname 的方式。

//呼叫title block的內容

注意:在子模板中,所有的標籤和**都要新增到從父模板中繼承的block中。否則,這些文字和標籤將不會被渲染。(因為子模板相當於把內容嵌入到父模板到block中,而沒有寫到block中的內容當然不會被嵌入,也就不會被渲染。)

過濾器是通過(|)符號進行使用的,例如:}:將返回name的長度。

過濾器相當於是乙個函式,把當前的變數傳入到過濾器中,然後過濾器根據自己的功能,再返回相應的值,之後再將結果渲染到頁面中。

jinja2擁有許多過濾器:**自:

測試器主要用來判斷乙個值是否滿足某種型別,語法是:if...is...

value of variable: }

variable is not escaped

jinja2中測試器有:

在模板渲染字串的時候,字串有可能包括一些非常危險的字元比如<、>等,這些字元會破壞掉原來html標籤的結構,更嚴重的可能會發生xss跨域指令碼攻擊,因此如果碰到<、>這些字元的時候,應該轉義成html能正確表示這些字元的寫法。

對於一些不信任的字串,可以通過}或者是}的方式進行轉義。

如果想關閉自動轉義,可以通過}的方式關閉自動轉義。

...可以將一段**塊放在中間,來關閉或開啟自動轉義:

autoescaping is disabled here

}

在jinja中載入靜態檔案只需要通過url_for全域性函式就可以實現:

引入static目錄下的about.css檔案。

Jinja2語法小記

jinja2模板中文文件 表示式 用於裝載字串 變數 函式呼叫等語句 用於裝載控制語句,比如if判斷 for迴圈等注釋 用於裝載乙個注釋,模板渲染的時候會被忽略掉 在模板中,我們可以使用 獲取變數的屬性 user 如果user為傳入模板中的字典變數,則我們可通過 獲取它的鍵值。eg user.use...

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

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