Python Mako模版之頁面繼承

2021-07-29 08:35:15 字數 1283 閱讀 2022

最近在重構自己的乙個專案,於是將django的模版轉換成mako的第三方模版,但是發現關於mako的文件挺多,但是全都是英文的,看起來挺費力,但是這兒有一篇博文翻譯的不錯:

關於頁面繼承,寫過比較大的專案大家應該都心有體會,為了保證乙個專案的風格統一,一般我們都會寫乙個基本的模版,如網頁頭部,側邊欄,底部欄,因此造成了前端**冗餘量特別大,django中的模版提供了頁面繼承的功能,因此我們可以將整個工程重複的**專門存放到乙個頁面裡,然後在需要使用時,使用和標籤來實現。

那麼,我們該怎樣通過mako實現呢?

mako裡面有inherit這個標籤,我們可以看一下他的官方文件:

文件看著不舒服,那下面給出例子,還是看例子吧:

lang="en">

charset="utf-8">

block>

block>

渲染結果:

這就成功實現了頁面的繼承,但是文件裡也講到了關於include也是可以實現頁面繼承的,他們之間有啥區別?下面看:

include.htmlblock>

block>

渲染結果:

可能大家已經看出來區別了,inherit在實現頁面繼承的同時,可以對頁面內容進行動態的修改,如預先指定block,並在後面頁面對block進行填充,從而實現動態的進行內容的修改,而include只是將文字靜態的引入,無法對其內容進行後期更改。

下面時官方對於include的解釋:

PHP模版頁面靜態化

header content type text html charset utf 8 編碼設定 powered by leeyea 2011 11 16 大概步驟 模版說明 1.模版介面根據自己的思路設計 前台美工 2.預留出需要被替換的區域,用存放 title 和 content 2.大括號 t...

模版引擎總結之綜合分析模版引擎

方式一 var str function template filename,data filename代表模版檔案的路徑 方式二 template.compile source,options 返回渲染函式 方式三 template.render source,data,options 返回渲染結...

C 之函式模版

函式模版是通用的函式描述,有時候也被稱為引數化型別。建立模版如下 template void swap any a,any b template void swap job job1,job job2 void show job j int main template void swap job j...