Flask框架9 Jinja2模板巨集相關

2022-05-22 22:15:09 字數 1699 閱讀 3123

#

!/usr/bin/env python

#-*- coding: utf-8 -*-

from flask import

flask,render_template

"""模板

獨立模板

為每一類介面編寫獨立的模板,如主頁模板、使用者資料頁模板、設定頁模板,可以在檢視函式中渲染並作為html的響應主體

區域性模板

僅包含部分**,需要將其插入到獨立模板中使用

ps:當多個獨立模板使用同一塊html**時,可以將此部分抽離出來,儲存到區域性模板中

例 頂部欄 定義為區域性模板 _top.html

插入到其它模板中 # 建議為了和普通模板分開,區域性模板建議使用下滑線開始

巨集 巨集(macro)是jinja2提供的乙個非常有用的特性,它類似python中的函式。使用巨集可以把一部分模板**封裝到巨集裡,使用傳遞的引數來構建內容,最後返回構建後的內容。

在功能上,它和區域性模板類似,都是為了方便**塊的重用。為了便於管理,把巨集儲存在單獨的檔案中,這個檔案通常命名為macros.html或_macors.html。在建立巨集時,

我們使用macro和endmacro標籤宣告巨集的開始和結束。在開始標籤中定義巨集的名稱和接收的引數

ps:另外,在使用巨集時需要注意上下文問題。在jinja2中,出於效能的考慮,並且為了讓這一切保持顯式,預設情況下包含(include)個區域性模板會傳遞當前上下文到區域性模板中,

但匯入(import)卻不會。具體來說,當我們使用render_template()函式渲染乙個foo.html模板時,這個foo.html的模板上下文中包含以下物件

1、fask使用內建的模板上下文處理函式提供的g、 session、 config、 request。

2、擴充套件使用內建的模板上下文處理函式提供的變數。

3、自定義模板上下文處理器傳入的變數。

4、使用render_template()函式傳入的變數。

5、jinja2和flask內建及自定義全域性物件。

6、jinja2內建及自定義過濾器。

7、jinja2內建及自定義測試器。

使用include標籤插入的區域性模板(比如_banner.html)同樣可以使用上述上下文中的變數和函式。而匯入另乙個並非被直接渲染的模板(比如macros.html)時,模板僅包含下列這些物件:

1、jinja2和flask內建的全域性函式和自定義全域性函式。

2、jinja2內建及自定義過濾器。

3、jinja2內建及自定義測試器。

故如果想在匯入的巨集中使用第一列表中的2,3,4項,就需要在匯入時顯示的使用with context宣告傳入當前模板的上下文

巨集相關:

""")'/

')defindex():

"""巨集示例

"""user =

mours = [, ]

return render_template("

templations.html

",user=user,mours=mours)

if__name__ == '

__main__

':

"en

">

}

233333

}

amount == 1

amount > 1

flask框架模板jinja2

from flask import flask,render template from flask script import manager def index return this is index def template return render template file01.htm...

Flask框架(二)模板引擎JinJa2

三.巨集操作 jinja2 是乙個現代的,設計者友好的,仿照 django 模板的 python 模板語言。它速度快,被廣泛使用,並且提供了可選的沙箱模板執行環境保證安全 hello lower safe 渲染值時不轉義 capitalize 把值的首字母轉換成大寫,其他字母轉換成小寫 lower ...

1 4 Flask框架學習 模板 Jinja2簡介

要渲染乙個模板,通過render temlate方法 from flask import flask,render template about def about return render template about.html 更改模板資料夾為c templates from flask im...