Einfache Templates für Python

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

Einfache Templates für Python

Beitragvon mitsuhiko » Freitag 15. September 2006, 23:22

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
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Samstag 16. September 2006, 07:11

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
rafael
User
Beiträge: 189
Registriert: Mittwoch 26. Juli 2006, 16:13

Beitragvon rafael » Samstag 23. September 2006, 07:26

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

Beitragvon Y0Gi » Samstag 23. September 2006, 12:27

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:

Beitragvon murph » Sonntag 24. September 2006, 09:54

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 ;-)
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Sonntag 24. September 2006, 15:10

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.

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

Beitragvon murph » Dienstag 26. August 2008, 11:05

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...
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Dienstag 26. August 2008, 14:54

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

Beitragvon Leonidas » Dienstag 26. August 2008, 15:21

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 Modvoice
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Beitragvon Y0Gi » Dienstag 26. August 2008, 15:27

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:

Beitragvon murph » Dienstag 26. August 2008, 22:39

Vielen Dank!

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder