简介
Mako 是一个 Python 模板程序. 用于给定一个字符串, 或给定一个文件, 使用 Python 对象值动态地替换其中的一部分内容.可是使用 pip 或 easy_install 安装 Mako 库.
# pip install Mako
# easy_install Mako
使用
基本文本替换
安装完成后, 在交互环境中可以通过下面的代码来测试 Mako>>> import mako.template
>>> print mako.template.Template('Hello, ${ what }!').render(what='Mako')
Hello, Mako!
Hello, ${ what }!
中的动态内容进行替换. 动态内容是形如 ${ what }
这样的 Mako 标记, 它表示将传递给 render
函数的字典中, what
对应的项的值替换这个标记. 因此上面的 render
结果便是 Hello, Mako!
.替换文件中的动态内容
更多的应用场景是将需要生成的内容写成一个文件模板 (如 HTML 页面), 读取这个页面并生成结果内容. 在当前目录下创建 hello-mako.html 文件, 内容如下<html>
<body>
Dear ${ username }, welcome back!
import mako.template
templ = mako.template.Template(filename='hello-mako.html')
print templ.render(username='Mako')
使用中文及指定编码
上面的页面模板代码中如果包含中文或其它非 ASCII 字符, 如<html>
<body>
你好, ${ username }, 欢迎回来!
mako.template.Template
对象时多半会挂掉. 要为 Mako 模板指定输入编码方式才行import mako.template
templ = mako.template.Template(filename='hello-mako.html', input_encoding='utf-8')
print templ.render(username=u'柑奈')
分支
接下来, 如果这个用户是个管理员用户, 那么希望为这个用户呈现一个后台管理的入口 (当然其它用户就没这个福利了), 那么可以用 Mako 提供的分支来实现你好, ${ username }, 欢迎回来!
%if is_admin:
<a href='/admin'>管理页面</a>
%endif
templ = mako.template.Template(filename='hello-mako.html', input_encoding='utf-8')
print templ.render(username=u'柑奈', is_admin=False)
print templ.render(username=u'柑奈', is_admin=True)
%if
%endif
之间表示一段分支. 如果确实需要书写一个百分号, 而不是作为 Mako 的指令符号, 那么此处须连续两个百分号 %%
来转义, 通常页面上似乎也不会出现那么多百分号, 所以这个应该还是可以接受的吧.关于分支, 更详细的例子是
%if condition_a:
do_a
%elif condition_b:
do_b
%else:
do_c
%endif