Einfache Templates für Python

Code-Stücke können hier veröffentlicht werden.
Antworten
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Wäre nett, wenn das auch die syntax von jinja wäre!

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

nun ja. das ähnelt ja sehr stark php..
ich finde den jinja syntax besser :D
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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).
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

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 ;-)
http://www.cs.unm.edu/~dlchao/flake/doom/
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

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...
http://www.cs.unm.edu/~dlchao/flake/doom/
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

In Werkzeug gibt's eine Mini-Templatesprache, vielleicht handelt es sich dabei um die selbe oder eine Weiterentwicklung davon. Schau da doch mal rein.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

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).
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

Vielen Dank!
http://www.cs.unm.edu/~dlchao/flake/doom/
Antworten