Hello in Mako
| Author: | Frankie Chow |
|---|---|
| Version: | 1 |
| Copyright: | Creative Commons licenses |
| Date: | 2009-3-19 |
| Description: | 此文章簡介 Python 的 Mako template 系統。 |
| Category: | Notes, Python, Mako, Template |
| ShortName: | Hello in Mako |
何謂 Template
世上最出名的 Template 系統是 PHP 語言,它其本上就是一個 Template 語言,因此它的出現也迷倒了不少的網頁制作者。
我們來看看一個簡單的 PHP 語言吧。
一個簡單的例子
我們要認識什麼是 Template 系統,最好就是先看看一個簡單的 php 程式。
<html>
<body>
<?php echo 'Hello'; ?>
</body>
</html>
以下是執行結果
<html>
<body>
Hello
</body>
</html>
我們使用 Mako 在作 Template 工作
現在我們來討論 Mako 的 Template 工作。首先我們在 Python 中使用 Template 來工作,比較多人使用的有 Cheetah 、 Mako 及 Django 亦有自己專屬的 Template 系統。至於 Google App Engine 中言及的 Template 則是由 Django 而來的。
使用 Mako
如果您本是 php 的玩家,這方面看來一定會感到頭大的,因為 php 並沒有使用的問題,直接拿來寫就可以了,但是 Python 並不是一個天生的 Template 語言,所以就存在了使用的問題了。
簡單例子
我們先來看以下的一個間單例子︰
from mako.template import Template
t = """\
<html>
<body>
${'Hello'}
</body>
<html>
"""
print Template(t).render()
這裡的執行結果和之前的 php 程式執行結果是相同的。您也可以看見在這裡您需要更為複雜的編寫方法。
首先您要在 mako.template 中 import Template 的 class!另外您也需要把它建立和 render() 才產生需要的結果。
傳入數值 Template 中
Template 系統中也有一個重要的特色,就是接收在主程式中傳入數值。
例如︰ php 的網頁程式,就會接收網頁中經 GET 或 POST 傳入的表單或 url 中的數躆。
當然 Mako 中的 Template 也要能接收不同的數躆才行。 [1]
| [1] | 但是 Python 中要如傳收網頁中經 GET 或 POST 傳入的數躆,我們還是需要其它模組的配合才可以達到。不如 php 之方便!但是您真是一個貪方便的人嗎?! |
數躆傳入的例子
我們來看看以下的例子。
from mako.template import Template
t = """\
<html>
<body>
${hello}
</body>
<html>
"""
print Template(t).render(hello="Hello")
修改的地方不多,程式把字串傳入 hello 這個變數中,然後再把它傳送到 Template 中。
結語
我們對 Mako 的使用介紹就到此一停了。雖然不同的 Template 也有不同的使用者和使用實例。
那最得提的 Mako 的使用實例是什麼呢?!那就是 http://www.python.org 了。
您可以看 README ,內中亦提到 Mako 。本網站亦使用 Mako 作 Template 系統!