Jinja: Das Zulassen von Blocküberschreibungen in Include-Tags führt zu unerwartetem Verhalten.

Erstellt am 10. Juni 2013  ·  5Kommentare  ·  Quelle: pallets/jinja

Weitere Informationen finden Sie unter https://github.com/mitsuhiko/jinja2/pull/84#issuecomment -19208621.

Hilfreichster Kommentar

Es sollte so einfach sein, Include mit Blocküberschreibungen bereitzustellen, während die Kompatibilität der aktuellen Implementierung von Include beibehalten wird, indem einfach unterschiedliche Vorlagen-Tag-Namen verwendet werden:

{% include 'file.jinja2' %}

überschreibt die enthaltenen Blöcke nicht, während:

{% include_override 'file.jinja2' %}

macht dasselbe.

Es ist sehr seltsam, dass eine solche Funktionalität so lange nicht implementiert wird, da Jinja2 in den meisten Funktionen sehr leistungsstark ist, tatsächlich eine der besten Template-Engines überhaupt, nicht nur für Python.

Vor allem, wenn bereits ein Patch erstellt wurde.

Alle 5 Kommentare

Zurückgestellt, wird in der nächsten Wartungsversion enthalten sein.

Wurde das jemals behoben? Ich habe immer noch diesen Fehler (wie #169 und #84).

Der Fehler besteht immer noch.

Dieser Fehler wurde behoben. Ursprünglich führte #84 Blocküberschreibungen in Include-Tags ein und wurde später zusammengeführt, aber seitdem hat es einige Vorlagen-Setups (Rekursion auf duplizierte Blöcke) gebrochen, daher dieses Problem.

Da das Template-Verhalten nicht geändert werden sollte, setzt @mitsuhiko den Patch zurück.

Wenn Sie Blocküberschreibungen unterstützen möchten, erstellen Sie bitte ein neues Problem und möglicherweise einen Vorschlag für eine funktionierende Lösung.

Es sollte so einfach sein, Include mit Blocküberschreibungen bereitzustellen, während die Kompatibilität der aktuellen Implementierung von Include beibehalten wird, indem einfach unterschiedliche Vorlagen-Tag-Namen verwendet werden:

{% include 'file.jinja2' %}

überschreibt die enthaltenen Blöcke nicht, während:

{% include_override 'file.jinja2' %}

macht dasselbe.

Es ist sehr seltsam, dass eine solche Funktionalität so lange nicht implementiert wird, da Jinja2 in den meisten Funktionen sehr leistungsstark ist, tatsächlich eine der besten Template-Engines überhaupt, nicht nur für Python.

Vor allem, wenn bereits ein Patch erstellt wurde.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen