req.write("ein string") oder string aus funktion z
-
- User
- Beiträge: 188
- Registriert: Donnerstag 20. Juli 2006, 20:46
- Wohnort: Wien
- Kontaktdaten:
Man könnte sich ja auch noch die Arbeit antun und eine Templateengine in C programmieren, bzw. eine vorhandene für Python einsatzfähig machen.
lgherby
lgherby
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Cheetah hat afaik einen in C optimierten Name Mapper. Und dann gibt es noch ClearSilver wofür es vermutlich auch Python Bindings gibt. Nur frage ich mich gerade wie relevant das überhaupt ist. Ich nehme mal an dass die Template Engine auf eine Normalen Website 1-10% der verbrauchten CPU Zeit ausmacht.thelittlebug hat geschrieben:Man könnte sich ja auch noch die Arbeit antun und eine Templateengine in C programmieren, bzw. eine vorhandene für Python einsatzfähig machen.
lgherby
Ich hoffe mal es macht nichts wenn ich etwas vom Thema abweiche. Aber wo wir gerade bei Template Engines sind, was gibt es da was nicht so gross ist (Cheetah ist ja doch fast 1MB), nicht XML Basiert sowie Vererbung unterstützt? Jinja habe ich mir mal angesehen. Sieht nett aus (erinnert an Django) , ist jedoch auch schon Recht gross/mächtig. Mako wirk irgend wie etwas hacky und die Syntax etwas unfreundlich.
Wieso ist es so beliebt Templates in Python Code zu kompilieren, das wirkt auf mich nicht wirklich elegant.
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Kaum eine Engine macht das auch mit tatsächlich Python code zu erstellen. Mako/Jinja und ich denke einige andere auch interessieren sich nur für den Bytecode und dumpen den (wenn gewünscht) irgendwohin, damit das nächste mal das Template nicht mehr geparst werden muss.veers hat geschrieben:Wieso ist es so beliebt Templates in Python Code zu kompilieren, das wirkt auf mich nicht wirklich elegant.
und Jinja hat auch ein optionales C context objekt ^^
TUFKAB – the user formerly known as blackbird
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Hm, tönt für mich immer noch etwas nach schwarzer Magie. Aber vielleicht sollte ich es mir auch einfach genauer ansehen.blackbird hat geschrieben:Kaum eine Engine macht das auch mit tatsächlich Python code zu erstellen. Mako/Jinja und ich denke einige andere auch interessieren sich nur für den Bytecode und dumpen den (wenn gewünscht) irgendwohin, damit das nächste mal das Template nicht mehr geparst werden muss.
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Wenn du Wege findest das ohne schwarze Magie zu machen, raus damit. Interpretieren ist eine ziemlich blöde Idee da langsam.veers hat geschrieben:Hm, tönt für mich immer noch etwas nach schwarzer Magie. Aber vielleicht sollte ich es mir auch einfach genauer ansehen.blackbird hat geschrieben:Kaum eine Engine macht das auch mit tatsächlich Python code zu erstellen. Mako/Jinja und ich denke einige andere auch interessieren sich nur für den Bytecode und dumpen den (wenn gewünscht) irgendwohin, damit das nächste mal das Template nicht mehr geparst werden muss.
TUFKAB – the user formerly known as blackbird
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Magie? Warum? Python unterstützt und fördert doch Introspektion, und der Zugriff auf Codeobjekte aus der Sprache gehört auch dazu.veers hat geschrieben:Hm, tönt für mich immer noch etwas nach schwarzer Magie. Aber vielleicht sollte ich es mir auch einfach genauer ansehen.blackbird hat geschrieben:Kaum eine Engine macht das auch mit tatsächlich Python code zu erstellen. Mako/Jinja und ich denke einige andere auch interessieren sich nur für den Bytecode und dumpen den (wenn gewünscht) irgendwohin, damit das nächste mal das Template nicht mehr geparst werden muss.
- veers
- User
- Beiträge: 1219
- Registriert: Mittwoch 28. Februar 2007, 20:01
- Wohnort: Zürich (CH)
- Kontaktdaten:
Magie weil ich nicht damit vertraut bin und nicht verstehe wie es Funktioniert (Das Prinzip hinter Byte Code und einer VM kenne ich, aber nicht wie es in Python gehandhabt wird). Zudem Magie weil ich vermute dass das ganze ziemlich implementierungsabhängig und undokumentiert ist. Ich mag mich aber böse irren darum auchbirkenfeld hat geschrieben:Magie? Warum? Python unterstützt und fördert doch Introspektion, und der Zugriff auf Codeobjekte aus der Sprache gehört auch dazu.veers hat geschrieben:Hm, tönt für mich immer noch etwas nach schwarzer Magie. Aber vielleicht sollte ich es mir auch einfach genauer ansehen.blackbird hat geschrieben:Kaum eine Engine macht das auch mit tatsächlich Python code zu erstellen. Mako/Jinja und ich denke einige andere auch interessieren sich nur für den Bytecode und dumpen den (wenn gewünscht) irgendwohin, damit das nächste mal das Template nicht mehr geparst werden muss.
.veers hat geschrieben:Aber vielleicht sollte ich es mir auch einfach genauer ansehen.
Einen eleganteren schnellen Weg kenne ich nicht. Schneller wäre es das ganze in Nativen (Shell)Code zu kompilieren. Ist dann aber nicht nur von der Python Implementierung abhängig sondern sogar von der CPU.
Ich persönlich mag keine Template-Engines mit C-Basis, weil man non-pure-Python-Packages nicht mal eben auf einen Python-fähigen Webspace werfen kann, auf dem man keine Shell hat. Genau aus dem Grund sind Cheetah und ClearSilver für mich seinerzeit direkt gestorben und bis heute wiegt das Argument immer noch ganz ordentlich.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo Y0Gi!Y0Gi hat geschrieben:Genau aus dem Grund sind Cheetah und ClearSilver für mich seinerzeit direkt gestorben
Cheetah ist reines Python. Nur, wenn man möchte, kann man ein Modul mit einem in C geschriebenen Modul ergänzen. Damit wird Cheetah schneller. Es läuft aber genau so gut auch ohne dieses C-Modul. Bei mir ist Cheetah die ersten Tage komplett ohne dieses C-Modul gelaufen. Nur die Hinweise beim Kompilieren haben mich darauf gebracht, dass man Cheetah mit einem C-Modul noch schneller machen kann.
mfg
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.
Meine anderen beiden Topics hier habe ich im Titel als [gelöst] deklariert.
Darf ich das hier zu [gekidnapped] erklären?
Darf ich das hier zu [gekidnapped] erklären?
Regelmässiges Versagen ist auch eine Form von Zuverlässigkeit
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
wakko0815 hat geschrieben:Darf ich das hier zu [gekidnapped] erklären?
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.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Dann muss das aber wirklich lange her gewesen sein. In meiner Cheetah-Zeit (damals war Spyce 1.3 aktuell und Cheetah einer der wenigen TEs die es damals für Python gab) war das schon so, dass _namemapper optional war.Y0Gi hat geschrieben:gerold: Hm. Entweder ist das mal geändert worden oder ich habe das damals tatsächlich überlesen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice