Flask模板渲染

2022-08-22 10:00:13 字數 3513 閱讀 1997

目錄模板變數

巨集,類似python**中的函式

模板繼承

包含(include)

過濾器檢視函式的主要作用是生成請求的響應,這是最簡單請求.實際上,檢視函式有兩個作用:

在大型應用中,把業務邏輯和表現內容放在一起,會增加**的複雜度和維護成本.

使用模板的好處

兩個概念

渲染模板函式條件控制語句

jinja2語法中的if語句跟python中的if語句相似,後面的布林值或者返回布林值的表示式將決定**中那個流程會被執行:

hello, }

hello, stranger!

for迴圈

我們可以在jinja2中使用迴圈來迭代任何列表或者生成器函式

迴圈和if語句可以組合使用

}

在乙個for迴圈塊中你可以訪問這些特殊的變數

變數描述

loop.inde

當前迴圈迭代的次數(從1開始)

loop.index0

當前迴圈迭代的次數(從0開始)

loop.revindex

到迴圈結束需要迭代的次數(從1開始)

loop.revindex0

到迴圈結束需要迭代的次數(從0開始)

loop.frist

如果是第一次迭代,為true

loop.last

如果是最後一次迭代,為true

loop.length

序列中的專案數

loop.cycle

在一串串行間期取值的輔助函式

定義巨集

呼叫巨集
}
定義帶引數的巨集

呼叫巨集,並傳遞引數
}
把巨集單獨抽取出來,封裝成html檔案,其它模板中匯入使用

檔名可以自定義macro.html

在其它模板檔案中先導入,再呼叫

在模板中,可能會遇到以下情況:

像遇到這種情況,可以使用jinja2模板中的繼承來進行實現

模板繼承是為了重用模板中的公共內容.一般web開發中,繼承主要使用在**的頂部選單,底部.這些內容可以定義在父模板中,子模板直接繼承,不需要重寫

定義標籤的內容

from flask import flask,render_template

def parent():

return render_template('parent.html')

def child():

return render_template('child.html')

if __name__ == '__main__':

父模板:parent.html

子模板:child.html

jinja2模板中,除了巨集和繼承,還支援一種**重用的功能,叫包含(include)。它的功能是將另乙個模板整個載入到當前模板中,並直接渲染。

示例:include的使用

包含在使用時,如果包含的模板檔案不存在時,程式會丟擲templatenotfound異常,可以加上ignore missing關鍵字。如果包含的模板檔案不存在,會忽略這條include語句。

示例:include的使用加上關鍵字ignore missing

過濾器本質就是函式。

有時候我們不僅僅只是需要輸出變數的值,我們還需要修改變數的顯示,甚至格式化、運算等等,而在模板中是不能直接呼叫python中的某些方法,那麼這就用到了過濾器

使用方法:

如果沒有任何引數傳給過濾器,則可以把括號省略掉

如:'',這個過濾器的作用:把變數variable的值首字母首字母轉化為大寫,其餘字母轉化為小寫

在jinja2中,過濾器支援鏈式呼叫,示例如下:

}
輸出結果為:

drow olleh

#一大堆文字#

過濾器本質是函式,當模板內建的過濾器不能滿足需求,可以自定義過濾器。自定義過濾器有兩種方式實現。

重要:自定義過濾器名稱如果和內建過濾器重名,會覆蓋內建的過濾器

需求:新增列表反轉的過濾器

方式一

通過呼叫應用程式例項的 add_template_filter 方法實現自定義過濾器。該方法第乙個引數是函式名,第二個引數是自定義的過濾器名稱:

def do_listreverse(li):

# 通過原列表建立乙個新列表

temp_li = list(li)

# 將新列表進行返轉

temp_li.reverse()

return temp_li

方式二

用裝飾器來實現自定義過濾器。裝飾器傳入的引數是自定義的過濾器名稱。

def do_listreverse(li):

# 通過原列表建立乙個新列表

temp_li = list(li)

# 將新列表進行返轉

temp_li.reverse()

return temp_li

在html中使用該自定義過濾器

my_array 原內容:}

my_array 反**}

完整**:

from flask import flask, render_template

# 1.自定義列表反轉函式

# 方法二:使用裝飾器

def list_reverse(list):

# list =

list.reverse()

return list

# 2.將自定義的函式新增到flask過濾器中

def index():

list = [1, 3, 4, 5, 2] # 2,5,4,3,1

return render_template('test.html', list=list)

if __name__ == '__main__':

}}

flask使用渲染模板

使用渲染模板的好處是 將業務邏輯 訪問資料庫.和表現邏輯 瀏覽器看到的html 分離開來,易於維護。預設情況下 flask在程式檔案加中的templates子資料夾中尋找模板。mkdir jinja2template cd jinja2template mkdir templates cd temp...

flask的模板渲染

目錄markup轉換變數中的特殊字元 safe將html生成安全的文字 jinja2中模板語法之for迴圈 jinja2模板語法之if語句 在檢視函式中 在模板中 例項1 第一種傳參方式 目錄結構 server.py templates 資料夾 index.htmlserver.py def ind...

flask模板渲染,重定向

檢視,具體請看注釋 學過django後再學這個感覺要飛起來了 渲染模板引擎 重定向 請求物件 反向解析重定向 from flask import flask,render template,redirect,request,url for import settings 匯入配置 載入配置 檢視函式...