mako模板基礎

2021-08-20 11:18:14 字數 1771 閱讀 6216

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...