2009-06-23 7 views
4

作爲Python的「新手」,主要是編寫用於自動化系統管理相關任務的腳本的背景,對於何處使用某些工具,我沒有太多意義。何時在Python中使用模板引擎?

但我對開發使用特定工具/技術的本能感興趣。

我已經看到了關於模板引擎提到了很多,包括zedshaw談論Lamson

因此,使用Jinja2的我想我會問社會爲我提供一些建議,以在那裏/我可能知道我應考慮使用模板引擎,如Jinja2,Genshi,Mako和co。

回答

6

正如@mikem所言,模板可以幫助生成任何形式在合適的條件下,你喜歡的輸出。本質上,我在Python中寫的第一件有意義的事情是一個模板系統 - YAPTU,用於另一個Python模板工具 - 那是8年多前,其他這樣的系統存在......在我有了榮譽不亞於Peter Norvig(見here),現在它在搜索引擎上運行了近2000次點擊;-)。 (儘管大多數都是非常專業化的,尤其是HTML輸出),但其基本思想仍然存在 - 爲什麼還要在Python代碼中使用大量的print語句和硬編碼的字符串,何時更容易將可編輯模板文件中的字符串提取出來?如果你想要(例如)能夠用法語,英語或意大利語輸出(這是YAPTU在黑客攻擊週末的初始動機,因爲我第一次熟悉Python ......)能夠從正確的目錄(文本被正確翻譯的地方)獲取模板將使一切變得如此簡單!

從本質上講,我認爲模板系統更有可能不是一個好主意,無論何時輸出文本內容。例如,我已經使用YAPTU或其改編方法在JSON,XML和人類可讀(HTML,實際)輸出之間平滑切換;在這個時代,一個非常好的模板系統實際上應該能夠超越「text-ish」限制,並以protobuf或其他二進制序列化格式輸出。

哪個模板系統最好完全取決於你的具體情況 - 無論如何,我會研究(並試驗)其中的一些模板。有些是針對UI設計者(無法編程)應編輯它們的情況設計的,其他編程者只能使用;許多專用於HTML,一些專用於XML,另一些更通用;等),但其中有一個(或你自己的另一個! - )肯定會比一堆print更好! - )

+0

優秀和有益的答案。我想我會更好地瞭解何時可以「碰撞」到應該使用模板引擎的情況。 – solarce 2009-06-23 16:12:49

2

模板引擎在模板上工作以編程生成工件。模板指定了工件的骨架,並且程序填充了空白。這可以用於生成幾乎任何東西,無論是HTML,某種腳本(即RPM SPEC文件),稍後可以執行的Python代碼等。

0

簡而言之,模板可以讓你輕鬆地編寫一個人類可讀的文件並添加非常簡單的標記來識別應該被變量替代的區域,應該重複的區域等。

通常,模板語言只能做基本的「模板邏輯」,意思就是足以影響佈局的邏輯文檔,但不足以影響提供給模板以填充文檔的數據。