Also zuerst: was ist Jinja 1? Django Templates - NodeList + Compilierung - "Krüppelsyntax". Also zumindest mal Django Templates nur mit erweiterter (fast Python Syntax) und Quellcode Generierung für mehr Performance. Allerdings nach wie vor sandboxed (Template Desigern können den Anwendungsquellcode nicht kaputt machen oder sonst irgendetwas tun, dass die Sicherheit gefährden würde).
Und jetzt ein paar Fragen die vor allem an Leute gerichtet sind, die schon was mit der Django Template Engine gemacht haben:
1.) Nutzt ihr {{ block.super }}? Ich würde dieses Feature in Jinja gerne fallen lassen, da man dafür die überschrieben Blöcke mitführen müsste und dies den generierten Quellcode aufbläst.
2.) Welche Features fehlen euch an der Django Template Engine?
Jinja 1 sieht momentan so aus:
Code: Alles auswählen
<h1>Reversed Userlist mit Foobar</h1>
{% for user in users|reverse %}
{% if loop.even or user.active or user.user_id is even %}
foobar mit {{ user|escape }}
{% elif loop.odd and user.username == "buzz" %}
blah
{% else %}
hehe
{% endif %}
{% endfor %}
Momentane Features und Unterschiede zu django:
* austauschbare Blocksyntax ({% zu <% oder ähnliches)
* Python Kompatible Syntax (list comprehensions und ein paar ähnliche Dinge wurde nicht implementiert) aber andere Semantiken: Nur unicode Strings, is Operator führt Tests aus ({% if something is even %} / {% if something is lower %} etc.), else Block in For-Schleifen wird ausgeführt, wenn nicht iteriert wurde.
* Der Translator erzeugt gültigen Python Code aus den Templates, damit schneller als Django Templates. Wenn auch der Unterschied nicht so groß ist.
* Macros (wie Python Funktionen)
* For-Schleifen können rekursiv verwendet werden.
* Filter erlauben mehrere Argumente ({{ foo|replace("blub", "blah")|escape }})
Also wer noch gute Ideen hat oder meine Fragen von oben beantworten kann hat gute Chancen, dass die Änderungen noch in das 1.0 Release kommen