}:裝載乙個變數,模板渲染的時候,會使用傳進來的同名引數這個變數代表的值替換掉。
:裝載乙個控制語句。
:裝載乙個注釋,模板渲染的時候會忽視這中間的值。
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模板引擎
檢視函式的主要作用是生成請求的響應,這是最簡單的請求。實際上,檢視函式有兩個作用 處理業務邏輯和返回響應內容。在大型應用中,把業務邏輯和表現內容放在一起,會增加 的複雜度和維護成本。本節學到的模板,它的作用即是承擔檢視函式的另乙個作用,即返回響應內容。使用模板的好處 兩個概念 渲染模版函式 使用 變...