Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Genshi bietet sowas in Form des Builders, nur eben dass die Inhalte eines Elements nicht in `with`-Blücken, sondern als Funktionsargumente definiert werden.
Funktional hat den Nachteil, dass man keine bedingten Anweisungen wie gewohnt einfließen lassen kann. Auch Änderungen an Variablen werden schwer. Mit `print` und `with` lassen sich einfach alle weiteren Python-Anweisungen wie gewohnt kombinieren. Ob's wirklich schick ist, habe ich noch nicht entschieden.
Ich weiß gar nicht mehr, warum ich in meinem Beispiel den Builder verwendet habe. Wahrscheinlich gab es gar kein Template, weil es nicht erforderlich war, und nur diese simple Struktur ausgegeben werden musste. Die, übrigens, nichts mit Präsentation oder Layout zu tun hat (dafür kommt CSS zum Einsatz), sondern nur eine zu exportierende Datenstruktur darstellt - ein XHTML-Dokument eben. Nur Daten.
Ansich ist die Idee ja schon witzig. Gibt es aber irgendwelche Gründe, das so zu machen anstatt eine Template-Engine zu verwenden?
Ich finde, es ist ein Wert, keine neue Template-Sprache lernen zu müssen. Und man hat keine weiteren Abhängigkeiten im Code. Außerdem lässt sich das ganze in nur ca. 50 Zeilen implementieren und ist ein schönes Beispiel für die Möglichkeiten von Python.
Ansich ist die Idee ja schon witzig. Gibt es aber irgendwelche Gründe, das so zu machen anstatt eine Template-Engine zu verwenden?
Ich finde, es ist ein Wert, keine neue Template-Sprache lernen zu müssen.
Und die Webdesigner wird es freuen, wenn sie Python zum Designen nutzen müssen
Und man hat keine weiteren Abhängigkeiten im Code.
Naja, man muss schon arg genügsam sein, um mit der Standardbibliothek aufzukommen. Bei jeder auch nur einigermaßen komplexen Aufgabe hat man eh externe Abhängigkeiten, eine mehr oder weniger macht da auch nichts aus
sma hat geschrieben:Ich finde, es ist ein Wert, keine neue Template-Sprache lernen zu müssen. Und man hat keine weiteren Abhängigkeiten im Code. Außerdem lässt sich das ganze in nur ca. 50 Zeilen implementieren und ist ein schönes Beispiel für die Möglichkeiten von Python.
Wenn du für das Erlernen von Mako/Jinja/Django mehr als 5 Minuten als Python Programmierer brauchst ist was kaputt.