Genshi vs. jinja

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Da Genshi letztens hier im Forum erwähnt wurde, würde ich gern mehr über die Unterschiede bzw. Vor-/Nachteile wissen...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich würde mal sagen, dass du am besten es selbt ausprobierst.

Sie sind etwa so verschieden wie Cheetah und Kid: Jnja ist für Textsachen generell gedacht und Genshi prodziert hauptsächlich XML.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Leonidas hat geschrieben:Ich würde mal sagen, dass du am besten es selbt ausprobierst.
Schon klar... Es wäre auch besser alles selber zu programmieren... Soviel Zeit hat aber wohl keiner... oder du?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Genshi kann auch Text, sollte dann ähnlich wie Cheetah oder Django-Templating aussehen.

Nachteile von Genshi sehe ich jetzt keine. Generell als Vorteil von XML-fähigen TEs sehe ich, dass man bei der Generierung von X(HT)ML sauberer mit Attributen/Elementen lösen kann als mit dem Text-Template-Ansatz, weil man so sehr oft auf die Endblöcke verzichten kann (wenn man es auf ein ohnehin bestehendes Element anwendet). Klar? ;)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Zur Größe:

Genshi - 172KB
jinja - 109KB

Also der Unterschied ist schon mal nicht so groß...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

jens hat geschrieben:Es wäre auch besser alles selber zu programmieren...
Nein, wäre es nicht (nicht unbedingt zumindest). Denn sowohl bei Genshi als auch Djngo/Jinja sitzen fähige Programmierer dahinter, so dass ein selbstprogrammiertes Templating-System nicht so ohne weiteres besser sein würde. Daher mache ich es auch so, dass wenn ich ein Modul suche, erstmal schaue ob es das gibt und erst dann gucke ob ich das selbst implementiere.
jens hat geschrieben:Soviel Zeit hat aber wohl keiner... oder du?
Nein. Ich pflege aber auch das Rad nicht immer neu zu erfinden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Y0Gi hat geschrieben:Genshi kann auch Text, sollte dann ähnlich wie Cheetah oder Django-Templating aussehen.
So wie Genshi sicher für XML-Sachen gut geeignet sind, so finde ich das hier beschriebene Text-Templating verglichen mit den Django-Templates eher ziemlich arm. Mir fehlen hier die Vererbung (die zuerst etwas seltsam anmutet aber sich als sehr inuitiv erweist), Filter und Tags.
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

Aber immerhin kann es das überhaupt. Für die XHTML-Templates verwendet man eben die XML-Syntax, wie es ja Sinn macht. Oft heißt es ja "XML-only ist Mist, weil man ja auch mal Emails oder Logfiles erzeugen möchte" und genau das geht mit der Text-Syntax auch wunderbar und auf ausgefalleneres wie Vererbung kann man da auch verzichten.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hm... Nach dem kurz Studium der Genshi Dokus, ist Genshi wesendlich mehr als nur ein Templatesystem wie jinja...

Wobei ich da einiges etwas komisch finde. z.B. #choose

Code: Alles auswählen

#choose
  #when 0 == 1
    0
  #end
  #when 1 == 1
    1
  #end
  #otherwise
    2
  #end
#end
Warum macht man das so kompliziert? Warum sich nicht näher an Python halten? Also z.B. so:

Code: Alles auswählen

#if 0 == 1:
    0
  #elif 1 == 1:
    1
  #else:
    2
  #endif
Neu wäre evtl. das endif...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Das ist vielleicht Geschmackssache oder hatte tatsächlich einen Grund. Ich bin allerdings bisher sehr gut ohne diese gegenüber Kid hinzugekommenen Direktiven ausgekommen, also mach dir keinen Kopf ;)
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Naja, ich bleibe erstmal wohl bei jinja... Das ist in PyLucid relativ neu eingebaut und funktioniert... Sehe keinen Grund zu wechseln...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

jens hat geschrieben:Warum macht man das so kompliziert? Warum sich nicht näher an Python halten? Also z.B. so:

Code: Alles auswählen

#if 0 == 1:
    0
  #elif 1 == 1:
    1
  #else:
    2
  #endif
Neu wäre evtl. das endif...
Weils dann nicht mehr mit XML geht. Die direktiven müssen bei Genshi für Text und XML gehen.
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:

Den Zusammenhang sehe ich jetzt nicht so ganz...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Exkurs XML: Elemente müssen Start- und End-Tag haben oder in sich geschlossen sein. Sowas wie elif hat kein Ende-Gegenstück.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Verstehe... Naja, der ganze Block kann man ja mit #endif markieren... Für die Einzelteile müsste man sich halt mehr verrenken :)

Naja, egal... Ich nutze es eh nicht :)

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten