Jinja hat ja diesen "extends"-Tag: http://wsgiarea.pocoo.org/jinja/docs/inheritance.html
Ich benutzte das auch schon. Nun frage ich mich allerdings, wie ich einen Block zentral in einer seperaten Datei definieren kann. Diesen möchte ich dann in zwei anderen Templates einbinden???
Das klappt mit dem "extends" Tag nicht wirklich, oder? Es müßte viel mehr sowas wie ein import/include Tag geben, oder sehe ich da was falsch?
[jinja] extends und zentral definierte blocks...
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Wenn du Blöcke von anderen Dateien reinladen willst kannst du in der SVN Version das Prepare Tag verwenden:
"blocks.html"
"myfile.html"
"blocks.html"
Code: Alles auswählen
{% prepare "dialog" accepting title, text %}
<div id="dialog">
<h2>{{ title|escapexml }}</h2>
{{ text|escapexml|nl2pbr }}
{% endprepare %}
Code: Alles auswählen
{% require "blocks" %}
{% for dialog in dialogs %}
{% call "dialog", dialog.title, dialog.text %}
{% endfor %}
TUFKAB – the user formerly known as blackbird
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hm. Also irgendwie erscheint mir das etwas unübersichlich... Kann man es nicht so machen:
"shared_blocks.html"
"template.html"
"shared_blocks.html"
Code: Alles auswählen
{% block "dialog" %}
<div id="dialog">
<h2>{{ title|escapexml }}</h2>
{{ text|escapexml|nl2pbr }}
{% endblock %}
Code: Alles auswählen
{% import "shared_blocks.html" %}
Der Dialog:
{% marker "dialog" %}
...blabla...
-
- User
- Beiträge: 1790
- Registriert: Donnerstag 28. Oktober 2004, 16:33
- Wohnort: Graz, Steiermark - Österreich
- Kontaktdaten:
Das hat ein Problem und einen Nachteil
Zuerst das Problem. Blöcke und marker gegen in beide Richtungen. Das heißt sie können sowohl überschrieben werden oder selber überschreiben.
Der Nachteil ist, das man solche Blöcke meist für Dialoge oder ähnliches verwendet. Und da hat es wenig Sinn direkt den Context zu übergeben. Sowas wie die Schleife bekommst du mit deiner Lösung nicht hin.
Du kannst aber statt {% require %} auch {% include %} verwenden, der unterschied ist nur, dass require selbst nichts ausgibt, include aber das includierte Template erst mal rendert. Resultat könnten einige Leerstellen sein.
Zuerst das Problem. Blöcke und marker gegen in beide Richtungen. Das heißt sie können sowohl überschrieben werden oder selber überschreiben.
Der Nachteil ist, das man solche Blöcke meist für Dialoge oder ähnliches verwendet. Und da hat es wenig Sinn direkt den Context zu übergeben. Sowas wie die Schleife bekommst du mit deiner Lösung nicht hin.
Du kannst aber statt {% require %} auch {% include %} verwenden, der unterschied ist nur, dass require selbst nichts ausgibt, include aber das includierte Template erst mal rendert. Resultat könnten einige Leerstellen sein.
TUFKAB – the user formerly known as blackbird