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>

從結果來的討論

您可以看見那 <?php ?> 是存在 html 碼中,執行後傳回了 Hello 字串,而這個字串亦是夾在那 html 碼中間。

這是標準的 Template 的工作。

我們使用 Mako 在作 Template 工作

現在我們來討論 Mako 的 Template 工作。首先我們在 Python 中使用 Template 來工作,比較多人使用的有 CheetahMakoDjango 亦有自己專屬的 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.templateimport 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 系統!


Comments: (log in to comment)