flask學習筆記 11

2021-08-27 16:06:01 字數 1903 閱讀 9744

flask11-模板**服用

模板**復用

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

* 多個模板具有完全相同的頂部和底部內容

* 多個模板中具有相同的模板**內容,但是內容中部分值不一樣

* 多個模板中具有完全相同的 html **塊內容

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

對巨集(macro)的理解:

* 把它看作 jinja2 中的乙個函式,它會返回乙個模板或者 html 字串

* 為了避免反覆地編寫同樣的模板**,出現**冗餘,可以把他們寫成函式以進行重用

* 需要在多處重複使用的模板**片段可以寫入單獨的檔案,再包含在所有模板中,以避免重複

* 定義巨集

* 呼叫巨集

}

* 這會輸出

* 把巨集單獨抽取出來,封裝成html檔案,其它模板中匯入使用,檔名可以自定義macro.html

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

**演練

* 使用巨集之前**

* 定義巨集

}

* 使用巨集

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

* 標籤定義的內容

* 相當於在父模板中挖個坑,當子模板繼承父模板時,可以進行填充。

* 子模板使用 extends 指令宣告這個模板繼承自哪個模板

* 父模板中定義的塊在子模板中被重新定義,在子模板中呼叫父模板的內容可以使用super()

父模板    * base.html

頂部選單

底部

子模板    * extends指令宣告這個模板繼承自哪

需要填充的內容

* 模板繼承使用時注意點:

* 不支援多繼承

* 為了便於閱讀,在子模板中使用extends時,盡量寫在模板的第一行。

* 不能在乙個模板檔案中定義多個相同名字的block標籤。

* 當在頁面中使用多個block標籤時,建議給結束標籤起個名字,當多個block巢狀時,閱讀性更好。

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

* include的使用

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

* include 的使用加上關鍵字ignore missing

小結* 巨集(macro)、繼承(block)、包含(include)均能實現**的復用。

* 繼承(block)的本質是**替換,一般用來實現多個頁面中重複不變的區域。

* 巨集(macro)的功能類似函式,可以傳入引數,需要定義、呼叫。

* 包含(include)是直接將目標模板檔案整個渲染出來。

Flask學習筆記

web 發展至今,特別是伺服器端,涉及到的知識 內容,非常廣泛。這對程式設計師的要求會越來越高。如果採用成熟,穩健的框架,那麼一些基礎的工作,比如,網路操作 資料庫訪問 會話管理等都可以讓框架來處理,那麼程式開發人員可以把精力放在具體的業務邏輯上面。使用web框架開發web應用程式可以降低開發難度,...

Flask 學習筆記

因為mac自帶了python2.7,所以這個文章是基於2.7版本的 依賴於兩個外部庫 werkzeug和jinjia2.werkzeug是乙個wsgi工具集,jinjia2負責渲染模版 2.安裝 1 mac osx或linux sudo pip install virtualenv mkdir my...

flask學習筆記

flask涉及到兩個重要的類 flask和blueprint 藍本 類。flask的應用程式需要flask類例項化才能執行,的基本配置資訊也包含在此類中。例項化如下 from flask import flask配置如下 blueprint類與flask類似,它能夠更好的組織web應用程式,並能延遲...