quixoteは古風ですが、それでも魅力的なフレームワークです。基本的に「HTMLをPythonに埋め込む」(すべての一般的なテンプレートシステムのようにその逆ではありません)。
概要からの1つの簡単な例:
def format_row [html] (head, value):
"<tr valign=top align=left>\n"
" <th align=left>%s</th>\n" % head
" <td>%s</td>\n" % value
"</tr>\n"
Python本体では、これらの文字列の最初はdocstringであり、他の文字列は無視され、[html]
一部は構文エラーになります。ではQuixote
、[html]
この関数をPython固有ではなく、「PTL」(Pythonテンプレート言語)としてマークします。このような関数を持つモジュールに使用するファイル拡張子はですが、 Pythonから.ptl
引き続き使用でき、これらの文字列が出力されます。import
現代のPythonテンプレートアプローチよりも優先して採用したいとQuixote
は思わないが、それは興味深い読み物、IMHOに役立つ。
さらに同様の線に沿って、特に(HTML自体ではなく、XMLの生成に適していますが) nevowがあります。stan、正規の例は...:
>>> from nevow import flat, stan
>>> html = stan.Tag('html')
>>> p = stan.Tag('p')
>>> someStan = html[ p(style='font-family: Verdana;')[ "Hello, ", "world!" ] ]
>>> flat.flatten(someStan)
'<html><p style="font-family: Verdana;">Hello, world!</p></html>'
タグを正しく閉じることを心配する必要がないので、一種の「さらにクール」です;-)。
ただし、最終的には、最近ではjinja2やmakoなどのテンプレートシステムが一般的に好まれています。主な実用的な理由は、プレゼンテーションロジック(テンプレート内)を他のレイヤー(Pythonコード固有)から分離することです。 「Python内にHTML/XMLを埋め込む」アプローチでは、私は推測します。