2011-02-15 69 views
2

我正在尋找一種成熟,易用,功能強大,獨立的,「漂亮」的Python模板系統/語言。我主要感興趣的是從HTML源代碼生成(靜態)HTML(所以Markdown/RST/Textile不相關)。Python的模板系統或語言(主要是HTML)

似乎有一些選擇(Python wiki有a very long list),這使得選擇相當艱鉅。以下是我聽說過或使用過的語言,按我個人的熟悉程度排列。

如果有興趣,請隨意將其轉換爲社區wiki。

Django

優點:

  • 熟悉且易於語法,如果你使用Django的。
  • Django的令人敬畏的文檔。
  • 與邏輯有很大分離。
  • 積極支持和維護。

缺點:

  • 沒有決定在單機模式中使用。如果您沒有任何INSTALLED_APPS,我甚至不知道加載模板標籤庫是否有效。
  • 與整個Django項目的進度掛鉤使獨立使用模糊不清。
  • 也許過分非Pythonic語法。

Jinja2

優點:

  • 語法基本的Django ++
  • 配置的語法
  • 維護良好的
  • 良好的文檔

Genshi

  • XHTML:(?好或壞)ISH語法
  • 因此鎖定生成基於XML輸出?
  • 可以直接在模板中使用Python(<?python ... ?>

Mako

優點:

  • 由主塔的支持下,部署在像書籤交易網站。COM

缺點:

  • 語法(從快速瀏覽),令我有點不平衡。 <%,%$

一些事情,我覺得是值得考慮的也是:

  • 的Python 3兼容性
  • 編輯器的支持(是否有維護TextMate的捆綁,例如?)

我承認我對以下內容一無所知,除了他們有醜陋的網站。

Cheetah

StringTemplate

+0

投我一爲的Jinja2。 – 2011-02-15 22:21:23

回答

4

對不起,沒有代表沒有發表評論,所以我會離開這個作爲一個答案。

我只使用django和mako。似乎這兩種模板語言的主要區別在於,Django的設計就好像你不能真正相信模板設計者。你可以看到他們如何限制你允許在模板中使用的代碼,並且他們不允許在模板中使用python代碼。 (有關Python代碼是否屬於模板的提示辯論)。對於我的項目,我既是程序員又是設計師,所以Django在我的方式上。

Mako只是簡單地將模板解析爲文本和Python代碼塊,並帶有一些輔助函數。這意味着Mako的代碼要小得多,假如你已經熟悉python,它的學習速度似乎比Django快得多。

例如:我能找到的分配在Django一個變量的唯一方法是使用一臺帶塊:

{% with total=business.employees.count %} 
    {{ total }} 
{% endwith %} 

(注意business.employees.count實際上是一個函數(business.employees.count ()))。

而在馬可等效代碼如下:

<% total = business.employees.count() %> 
${total} 

Django的大師:隨意指正。我的經驗有限,但這就是爲什麼我關掉了Django到Mako。

這似乎是不同的模板系統的一個相當不錯的基數進行比較,如果你只是想獲得語法的想法:http://catherinedevlin.pythoneers.com/cookoff.html