So, hab mit simpleTAL und Cheetah mal näher angesehen... Cheetah erscheint mir einfacher in der Benutzung als simpleTAL...
Allerdings ist die Preformance bei beiden nicht sooo doll:
simpleTAL import: 0.17sec. - ausführen: 0.01sec.
Cheetah import: 0.28sec - ausführen: 0.28sec.
(Nur ein sehr kleines Template/Daten Beispiel genommen, ich mach nochmal einen Test mit Loops)
Ist normalerweise kein Beinbruch, aber ich denke, wenn man sich auf Grundfunktionalität beschränkt, die ich nur brauche, dann geht's bestimmt auch schneller... Also doch wieder selbst programmieren?
EDIT: Cheetah mit einem Tabellenloop mit 100 Einträgen (Zeit ist ohne die erstellung der Daten!): 3.47sec.!!! Das ist echt nicht gerade schnell

Mal sehen was simpleTAL dann macht...
EDIT2: So, simpleTAL ist da schon wesendlich schneller. Für die 100 Einträge braucht es nur 0.12sec. das ist im Vergleich zu Cheetah eine beachtliche Leistung!
Hier mal mein Code:
Code: Alles auswählen
chapters = []
for i in xrange(100):
chapters.append(
{"heading":"n%s" % i,
"text":"fn%s" % i,
"email":"j%s@eifh.com" % i}
)
#~ # A list that contains a dictionary
#~ chapters = [{"heading": "Introduction", "text": "Some <b>text</b> here"}
#~ ,{"heading": "Details", "text": "Notice tags are preserved."}
#~ ]
start_time = time.time()
from simpletal import simpleTAL, simpleTALES
print "import:", time.time()-start_time
template = """<html>
<body>
<h1 tal:content="title">The title</h1>
<table>
<tr tal:repeat="chapters doc">
<td tal:content="chapters/heading">Chapter Heading</td>
<td tal:content="structure chapters/text">Text</td>
<td tal:content="structure chapters/email">Text</td>
</tr>
</table>
"""
start_time = time.time()
# Create the context that is used by the template
context = simpleTALES.Context()
context.addGlobal("title", "Hello World")
context.addGlobal("author", "Colin Stewart")
advancedText = 'Structured text can contain other templates like this - written by <b tal:replace="author">Me</b>'
chapters.append ({"heading": "Advanced", "text": simpleTAL.compileHTMLTemplate (advancedText)})
context.addGlobal ("doc", chapters)
template = simpleTAL.compileHTMLTemplate(template)
template.expand(context, sys.stdout)
print time.time()-start_time
Code: Alles auswählen
daten = []
for i in xrange(100):
daten.append(
{"surname":"n%s" % i,
"firstname":"fn%s" % i,
"email":"j%s@eifh.com" % i}
)
start_time = time.time()
from Cheetah.Template import Template
print "import:", time.time()-start_time
template = """<h2>$title</h2>
<p>$contents</p>
<TABLE>
#for $client in $service
<TR>
<TD>$client.surname, $client.firstname</TD>
<TD><A HREF="mailto:$client.email" >$client.email</A></TD>
</TR>
#end for
</TABLE>
"""
nameSpace = {
'title': 'Hello World Example', 'contents': 'Hello World!',
"service": daten
}
start_time = time.time()
print Template(template, searchList=[nameSpace])
print time.time()-start_time