Die beste Python-Templating-Bibliothek für die Code-Generierung
Anstatt mich zu verbringen den nächsten Tag (oder Jahr) zu Lesen, über Sie alle, gibt es Anregungen für templating-engines, die ich in Aussehen sollte im detail?
InformationsquelleAutor der Frage taudep | 2009-03-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beste Vorschlag: versuchen Sie alle. Es wird nicht lange dauern.
Mein Favorit: Jinja2 (von einer Meile)
Es hat anständige syntax trace können Fehler durch und ist sandboxable.
InformationsquelleAutor der Antwort Ali Afshar
Wenn du tust, code-Generierung, finden Sie vielleicht Cog nützlich - es ist speziell für die code-Generierung, statt einer allgemein geltenden templating-Sprache.
InformationsquelleAutor der Antwort babbageclunk
Die wichtigste Sorge ist, ob Sie Leben können mit der syntax der templates erfordern. Zweiten und Dritten (je nach Anwendung muss), wäre die Geschwindigkeit und Leichtigkeit der Verteilung.
Schaute ich mir alle von Ihnen, aber die einzige syntax, die ich stehen könnte, war Jinja. Jinja hat den Vorteil, die Unterstützung einer Menge von Python-Konstrukte, so dass es sehr einfach zu snippets hinzufügen von Funktionalität zu den Vorlagen, wie Sie benötigt werden, ohne Codierung speziellen tags. Das meiste, was erfordert andere tags in template-Systeme werden durch Makros in Jinja.
Natürlich, wenn Sie auf der Suche nach etwas einfach und schnell, es ist schwer zu schlagen die Python-Template-API in der core-Sprache.
InformationsquelleAutor der Antwort Chris B.
Update: Kid scheint es gelungen, durch Genshi.
Ich verwendet habe, Kind, das ist denke ich eins der älteren Systeme. Ich habe festgestellt, dass es sehr solide, stabil und zuverlässig. Es ist tag-basiert, also ist es schön für das arbeiten mit XML/HTML. Es ist irgendwie interessant, dass template-Funktionen getan werden, wie HTML-Attribute, die nicht spezielle Blöcke, d.h. {% ... %}. Jedoch einige Aspekte, die (vor allem die Art und Weise, es bedeutet "enthält") kann ziemlich lästig. Es scheint auch gar nicht entwickelt werden, aktiv oder überhaupt nicht mehr.
Lohnt es sich einen Blick auf, wenn Sie wollen etwas, das gewesen herum für eine Weile und Recht stabil geworden ist. Wenn Sie etwas mehr die jüngsten, ich habe gehört, gute Dinge über beide Genshi und Jinja.
InformationsquelleAutor der Antwort DNS
Ich mag Clearsilverweil es funktioniert mit vielen verschiedenen Sprachen und es erzwingt die Trennung zwischen Daten und Präsentation. Ich vorher verwendet, Geparden und während es ist ziemlich nett, ich wusste nicht, wie arbeiten mit dem, was manchmal schien, wie eine begrenzte form von Python.
InformationsquelleAutor der Antwort David Z
Wenn Sie arbeiten, mit X[HT]ML, eine tag-basierte templating-Systeme, die lassen Sie mit wohlgeformte Vorlagen ist ein guter Schritt. Ich benutze PXTLFWIW. (Es kann zu produzieren andere Formate, aber wenn Ihr Schwerpunkt ist nicht XML oder HTML wäre es nicht eine sinnvolle Wahl.)
Ich habe eine Intensive Abneigung für Template-Systeme, die behaupten zu "helfen Sie, die Businesslogik und Präsentation" durch die Begrenzung Ausdrücken Ihrer eigenen Kleinen Sprache. Sie scheinen nicht zu verstehen, dass es ist wie etwas wie "presentation logic", und es kann manchmal kompliziert genug, um eine Echte Sprache wie Python, um es auszuführen. Nachdem Sie kick out Ihre Präsentation Logik in der app mit der business-Logik ist also nicht ein Gewinn. Vermeiden!
(Die begrenzte expression separaten mini-language-Ansatz aus gewissen Sinn in JSP 's ' EL', als Java ist zu ärgerlich ausführlich, um die Verwendung in einer Template-Bibliothek. Aber wir haben Python! Es ist perfekt für das schreiben von Ausdrücken in den Vorlagen, wie Sie ist; hacken, die Funktionalität und die Nutzer lernen eine andere, neue Sprache, gewinnt man nichts.)
InformationsquelleAutor der Antwort bobince
Wenn Sie möchten, eine sehr leicht option, versuchen templete. Es ist nur 80 Zeilen code in einem Modul. Haben Sie einen Blick hier und hier (veröffentlicht wurde es in einem blog). Ich denke, es ist eine kluge und sehr konzentrierte Lösung, wenn die Funktionen sind ausreichend für Sie.
InformationsquelleAutor der Antwort nikow