中文語法文件
快速總結
特點:簡單快速,對模組化程式設計支援到位,能直接呼叫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.如果賬號正確密...