python3 模板庫 Python模板庫Mako

2021-10-11 16:57:25 字數 2089 閱讀 1693

中文語法文件

快速總結

特點:簡單快速,對模組化程式設計支援到位,能直接呼叫python**。

關於速度的對比:

mako:1.10 ms    myghty:4.52 ms

cheetah:1.10 msgenshi:11.46 ms

django:2.74 mskid:14.54 ms

本質及哲學:

mako的本質:模板語言。

第一原則:要寫好mako,最重要的是模組化程式設計,將重複**抽取出來,提取出公用的模組。mako的inherit/def/namespace/page等功能對模組化程式設計提供了很方便的支援。另外要把握模板語言的本質和知識結構。

第二原則:弄明白mako執行環境和執行機制。在此提供兩段**,如果你能知道mako背後都做了哪些事情就ok。

mako' philosophy: don't reinvent the wheel

常見的使用方式:

python**

from mako.template import template

from mako.runtime import context

from stringio import stringio

mytemplate = template("hello, $!")

buf = stringio()

ctx = context(buf, name="jack")

mytemplate.render_context(ctx)

python**

from mako.template import template

from mako.lookup import templatelookup

mylookup = templatelookup(directories=['/docs'], module_directory='/tmp/mako_modules')

def serve_template(templatename, **kwargs):

mytemplate = mylookup.get_template(templatename)

print mytemplate.render(**kwargs)

python**

from mako.template import template

mytemplate = template(filename='/docs/mytmpl.txt', module_directory='/tmp/mako_modules')

print mytemplate.render()

python**

from mako.template import template

from mako.lookup import templatelookup

mylookup = templatelookup(directories=['/docs'])

mytemplate = template(""" hello world!""", lookup=mylookup)

知識結構:

所有的模板語言,都是對「文字」進行編譯,所得結果為最終「頁面」(「文字」和「頁面」在後面會解釋)。在編譯過程中進行值的替換:將原文本中某些特殊標記(比如$)替換為目標文字(target)。定義特殊標記的規則便是模板語言的語法,比如取值運算,方法定義,方法呼叫等。在將原文本替換為目標的過程中,常常依賴外界傳入值,比如,講原文本$替換為使用者的姓名,可使用者的姓名去哪取呢?這就需要在生成模板的時候提供乙個環境,也叫「上下文」(context),專門用於提供模板解析過程中需要的值。

上段文字中提到的文字/頁面/上下文,有必要解釋一下。

文字:模板一定是存放在文字中麼?不是。可以存在string變數中,資料庫中或者從網路上讀取。

頁面:模板處理的結果一定是頁面麼?不是。大部分情況下我們將模板語言用於生成網頁頁面,但也可以用於生成郵件內容吧?可以生成pdf吧?或者,用來生成**(**的模板),做乙個**生成器。

上下文:上下文一定需要是個context物件麼?不一定,只要可以用於傳遞值就ok,所以可以是context,也可以像struts標籤那樣使用棧,也可以像mako這樣使用乙個字典(dict)。

再說說模板的快取:

參考:

python3菜鳥教程100例 Python3

python3 字典 字典是另一種可變容器模型,且可儲存任意型別物件。字典的每個鍵值 key value 對用冒號 分割,每個對之間用逗號 分割,整個字典包括在花括號 中 格式如下所示 鍵必須是唯一的,但值則不必。值可以取任何資料型別,但鍵必須是不可變的,如字串,數字。乙個簡單的字典例項 也可如此建...

python3編譯安裝 編譯安裝Python 3

目前python最新版為python 3,以下是編譯安裝python 3.7.0的方法,根據提示一行乙個命令輸入即可 安裝依賴 yum y install wget gcc gcc c libffi devel zlib devel wget 解壓tar xvjf python 3.7.0.tar....

python3經典例題 經典例題 Python

python python開發 python語言 經典例題 python 經典例題 if巢狀 1.使用者輸入賬號 2.使用者輸入密碼 3.判斷使用者的賬號是不是alex 4.如果賬號是alex在繼續判斷密碼是不是alexdsb 5.賬號和密碼都正確提示使用者alex就是乙個dsb 6.如果賬號正確密...