mako模板算是python裡面比較出色的乙個模板了,它宣稱有比jinja2更快的解析速度已經更多的語法支援,本篇部落格對它的使用做乙個小結。
使用pip可以方便的安裝
# 無需root許可權,安裝到使用者目錄下
pip install mako --user #python2
pip3 install mako --user #python3
通過from mako.template import template
引入mako模板,最基礎的用法是這樣:
from mako.template import template
t = template("hello,$")
print(t.render(name = 'world'))
==>hello,world
template函式還有一些常用的引數:
filename:指定從檔案中載入模板。最好用相對路徑,否則快取檔案會包含在很長的路徑下。
module_directory:快取目錄。從檔案中載入模板,可以指定module_directory生成.py檔案快取,提高載入速度。
一般來說,我們不直接使用template,而是使用templatelookup。
templatelookup可以給一系列模板預設引數,方便使用:
base
this
is the base templent!
index.html
<%include
file="base"/>
hello $!
lookup = templatelookup(directories['tt'],module_directory=root_dir+'/tt',collection_size=500,filesystem_checks=true)
tf = lookup.get_template('index.html')
print(tf.render(name='init'))
# 使用templatelookup,可以方便的設定模板目錄,當模板中include別的模板時可以只寫模板名
# collection_size設定載入到記憶體中的模板上限
# filesystem_checks為true會在每次載入模板快取判斷模板檔案是否有改動,會重新編譯。
==》this is the base templent!
==》hello,init
$
在{}
中可以執行python語句,比如$
會轉為大寫
##
後面根單行注釋
<%doc>
多行注釋
%doc>
此外注意若模板中存在中文應指點個編碼,使用## coding=utf-8
% for i in l:
$% endfor
% if i == 1:$
% end
if
# <% 兩個標籤之內的是執行的任意python語句 %>
<%
x = 'lyt'
x.upper()
%>
$
mako模板學習筆記
前面已經轉過一篇mako模板的呼叫方法,看了看也挺簡單的,這次主要是學習模板的編寫語法。之所以選擇mako模板,除了它的口碑好之外,主要是我受不了web.py自帶模板了,特別是控制結構那裡,沒有使用結束標記,非得縮排使用才行,嚴重影響頁面的編排。因為沒有搜到有現成的中文教程,就勉強看官方的英文原版了...
用mako增強django模板,用法像jsp
django預設的模板功能還可以,但是不能直接用python的語法,mako解決了這個痛點,使得django的模板變得像jsp一樣,可以直接使用python的語法做一些事情。mako django mako demo 直接的類似python string format的樣子 from mako.te...
Mako模板引擎安裝及在Django中的整合
最近使用django做專案,覺得自帶模板侷限性很大,使用起來自由度不高,最終還是痛下決心換mako模板。找到一篇文章,講述如何在django的基礎上安裝mako並使用。mako模板引擎安裝及在django中的整合 作業系統 linux cent os 5 max os x 10.6 snow leo...