Template-Engine, die HTML in Python 3 generiert

Ich arbeite an einem Python 3-Projekt und möchte neben einigen TK-Fensterausgaben HTML generieren. Während ich das mit String-Operationen machen könnte, glaube ich nicht, dass dies einfach zu warten und von Benutzern leicht anzupassen sein wird.

Ich weiß, dass es eine Liste mit Templating-Paketen gibt, aber diese Liste ist ziemlich lang und enthält Pakete, die veraltet sind, nicht für Python 3 geeignet sind usw.

Um mein Trial-and-Error-Ansatz zu minimieren, suche ich eine Empfehlung mit den folgenden Eigenschaften:

  • funktioniert in Python 3
  • funktioniert auf Raspberry Pi
  • Paket wird aktiv gepflegt
  • Unterstützung für Schleifen ( for) und Verzweigungen ( if).
  • leicht verständlich für Entwickler, die sich bereits mit HTML und CSS auskennen

Antworten (2)

Meine persönliche Empfehlung wäre Jinja2 . Die Templating-Sprache hat eine Syntax, die nicht besonders schwer zu erlernen ist, wenn Sie bereits an das Programmieren in Python gewöhnt sind und etwas Erfahrung mit HTML haben, sie ist verdammt schnell und hat eine Reihe nützlicher Funktionen für die Arbeit mit HTML direkt aus der Box reines Python mit minimalen Abhängigkeiten (wenn ich mich richtig erinnere, gibt es nur eine außerhalb der Python-Standardbibliothek), und es ist für so ziemlich jede größere Distribution (einschließlich Raspbian) paketiert.

Der einzige mögliche Nachteil ist, dass die Python 3-Unterstützung immer noch als experimentell aufgeführt wird und Python 3.3 oder neuer benötigt, obwohl die anfängliche Python 3-Unterstützung vor einiger Zeit hinzugefügt wurde (sie unterstützen nicht einmal mehr die Version, die sie ursprünglich hinzugefügt hat, also ich denken, dass es mindestens sechs Monate her sind), haben sie ziemlich genau gesagt, dass sie nur konservativ sind (alle Tests bestehen auf Python 3, sie sind sich nur nicht 100% sicher, dass es keine lauernden Eckfälle gibt, die aufbrechen Python 3), und ich persönlich hatte keine Probleme damit, es mit Python 3 zu verwenden.

Die Templating-Engine von Django ist ziemlich weit verbreitet und unterstützt Python 3, ist aber nicht gerade leichtgewichtig (Sie müssen so ziemlich alles von Django installieren, um die Templating-Engine zu erhalten), und sie neigen dazu, die Dinge Version für Version auf subtile Weise zu beschädigen. Abgesehen davon hat es die meisten der gleichen Vorteile wie Jinja2 (Jinja2 war eigentlich ursprünglich eine eigenständige Implementierung der Vorlagensprache von Django, aber es ist eine Abweichung davon, dass Jinja2-Vorlagen und Django-Vorlagen nicht garantiert austauschbar sind).

Das einzige andere Templating-System, das in Ihrem Link erwähnt wird und das ich tatsächlich erkenne, ist Mako . Ich habe mich nie selbst damit befasst, aber von einer Reihe von Mitarbeitern gehört, dass es zuverlässig ist, und ich habe eine Reihe großer Python-Projekte gesehen, die es verwenden (ich denke, Reddit verwendet es tatsächlich). Die Syntax ist ein bisschen näher an HTML oder XML als Jinja2 und Django, aber das kann ebenso ein Problem wie ein Vorteil sein (je näher die Syntax, desto einfacher ist es, zu verwechseln, was Teil der Vorlage ist und was tatsächlich ist HTML).

Ich weiß nicht, ob es speziell auf Rasberry Pi funktioniert (aber ich verstehe nicht, warum es nicht funktionieren würde), aber Cheetah deckt Ihre anderen Anforderungen ab. Ich habe es für ein umfangreiches Projekt verwendet und war damit zufrieden. Besonders gut hat mir gefallen, dass eine Vorlage von einer anderen erben und ihre Funktionalität bei Bedarf einfach mit Python-Code erweitern kann.