Seite 1 von 1

Einfache Templates für Python

Verfasst: Freitag 15. September 2006, 23:22
von mitsuhiko
Also manchmal wünsch ich mir wirklich eine mini Template engine in der Standard library. Ich hab jetzt einfach mal Spaßhalber eine PHP Ähnliche Template Engine in 80 Zeilen programmiert. Funktioniert ca so:

Code: Alles auswählen

from stpy import Template
tmpl = Template('''\
<h1>Template Test</h1>

<ul>
<? for entry in entries: ?>
  <li><?= entry['title'] ?> - <?= entry['text'] ?></li>
<? end ?>
</ul>

<h3>Variables defined:</h3>
<pre><?= dir() ?></pre>
''')

print tmpl.render(
    entries = [
        dict(
            title='Test',
            text='Hihi'
        ),
        dict(
            title='Foobar',
            text='blub'
        )
    ]
)
Das stpy modul gibt es hier.

Viel Spaß :D

Verfasst: Samstag 16. September 2006, 07:11
von jens
Wäre nett, wenn das auch die syntax von jinja wäre!

Verfasst: Samstag 23. September 2006, 07:26
von rafael
nun ja. das ähnelt ja sehr stark php..
ich finde den jinja syntax besser :D

Verfasst: Samstag 23. September 2006, 12:27
von Y0Gi
Kann zwar keine Loops, Conditionals und mehr, aber für einfache, komfortable Platzhalter-Ersetzung sind die in Python 2.4 eingeführten "Simpler String Substitutions" (PEP 292) schon ganz nett (auch wenn ich sie bisher noch nicht benutzt habe).

Verfasst: Sonntag 24. September 2006, 09:54
von murph
ich finds nett: zwar klein, aber fein :-)

//edit:
rest = source[match.end():]
das macht mir ärger, denn wenn nie die for-schleife durchlaufen wurde,
ist match nicht bekannt. das problem trat auf bei einem simplen versuch:
source : '<html>\n<? print "hi" ?>\n</html>\n'
ich weiß, dass print dadrin etwas unsinnig ist, aber bei php kann mans ja auch machen ;-)

Verfasst: Sonntag 24. September 2006, 15:10
von jens
Y0Gi hat geschrieben:Kann zwar keine Loops, Conditionals und mehr, aber für einfache, komfortable Platzhalter-Ersetzung sind die in Python 2.4 eingeführten "Simpler String Substitutions" (PEP 292) schon ganz nett (auch wenn ich sie bisher noch nicht benutzt habe).
Ne, also ich nehme da lieber die alten String-Operations... Ich nutzte dabei die Dict-Platzhalter.
In PyLucid kann man diese einfache Variante als Alternartive zu jinja verwenden.

Verfasst: Dienstag 26. August 2008, 11:05
von murph
Hi!
Ich habe genau jetzt den Fall, dass ich das noch mal brauchen könnte :)
Kannst du das noch mal online stellen / hast du das noch?
Der Link scheint irgendwie tot zu sein...

Verfasst: Dienstag 26. August 2008, 14:54
von Y0Gi
In Werkzeug gibt's eine Mini-Templatesprache, vielleicht handelt es sich dabei um die selbe oder eine Weiterentwicklung davon. Schau da doch mal rein.

Verfasst: Dienstag 26. August 2008, 15:21
von Leonidas
Y0Gi hat geschrieben:In Werkzeug gibt's eine Mini-Templatesprache, vielleicht handelt es sich dabei um die selbe oder eine Weiterentwicklung davon.
Ist jetzt in der sandbox.

Verfasst: Dienstag 26. August 2008, 15:27
von Y0Gi
Habe auch gerade einen anderen Thread im Forum gefunden, der auf http://lucumr.pocoo.org/articles/simple ... -in-python verweist (und das wiederum auf das Repository).

Verfasst: Dienstag 26. August 2008, 22:39
von murph
Vielen Dank!