Hi,
Ist es möglich in cheetah eine datei methoden.tmpl zu haben, und diese dann in zB main.tmpl so einzubinden, dass alles was in methoden.tmpl mit "#def ..." definiert wurde erhalten bleibt? Bei #include methoden.tmpl wird nur der text importiert, nicht aber methoden-/variablen-definitionen.
Danke!
Jan
Cheetah methoden aus fremden Template importieren
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Jan!
Meinst du so etwas?
mfg
Gerold
Meinst du so etwas?
Code: Alles auswählen
#!/usr/bin/env python
#coding: utf-8
import cherrypy
from Cheetah.Template import Template
# Das hier steht normalerweise in eigenen Vorlagendateien
METHODS_TEMPLATE = """
#def table(rows):
<table border="1">
#for row in rows:
<tr>
#for col in row:
<td>$col</td>
#end for
</tr>
#end for
</table>
#end def
#def deflist(rows):
<dl>
#for (header, data) in rows:
<dt>$header</dt>
<dd>$data</dd>
#end for
</dl>
#end def
"""
# Das hier steht normalerweise in eigenen Vorlagendateien
INDEX_TEMPLATE = """<html>
<head></head>
<body>
#set $rows = [
["Max", "Mustermann"],
["Thomas", "Meier"]
]
$methods.table($rows)
$methods.deflist($rows)
</body>
</html>
"""
class Root(object):
def index(self, *args, **kwargs):
template = Template(INDEX_TEMPLATE)
template.methods = Template(METHODS_TEMPLATE)
return str(template)
index.exposed = True
def main():
cherrypy.quickstart(Root())
if __name__ == "__main__":
main()
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.