Angenommen, ich habe ein Vorlagenlayout in template.html gespeichert. Diese Vorlage enthält ein Banner, eine Seitennavigation, einen Inhaltscontainer und eine Fußzeile. Kann ich Flask verwenden, um diese Seitenelemente so aufzuteilen, dass ich Dateien wie banner.html, sidenavigation.html usw. haben und diese verschiedenen Dateien in template.html rendern kann?
Ist es möglich, Includes mit Flask auszuführen?
Michael
Liyan Chang
Aus: http://jinja.pocoo.org/docs/templates/#include
vorlage.html
{% include 'banner.html' %}
{% include 'sidenavigation.html' %}
{% include 'content.html' %}
{% include 'footer.html' %}
-
Möglicherweise möchten Sie sich auch die Vorlagenvererbung ansehen, da dies möglicherweise eine leistungsfähigere Methode ist, um das zu tun, was Sie möchten: jinja.pocoo.org/docs/templates/#template-inheritance
– Liyan Chang
14. Mai 2012 um 22:03 Uhr
-
Es ist zu beachten, dass Sie in Jinja2 keine Vererbungshierarchie erstellen können, Sie können ein Dokument nur eine Ebene tief vererben.
– Joshua Hedges
21. Juli 2017 um 4:20 Uhr
-
@MadPumpkin: Was genau meinst du damit? Sie können so viele Ebenen tief erweitern, wie Sie möchten. Es ist nicht möglich, eine einzelne Vorlage von mehreren anderen zu erweitern (vielleicht haben Sie das gemeint?)
– Roy Prins
31. Mai 2018 um 11:47 Uhr
plaes
Standardmäßig verwendet Flask Jinja2 als Template-Engine. Siehe Jinjas Vorlagendesigner-Dokumentation wie es gemacht wird.
-
Aber ist es möglich, hervorzuheben, welche Seite in sidenavigation.html aktiv ist?
– jOSe
19. November 2020 um 5:54 Uhr
-
@jOSe Sie können die verwenden
scoped
Stichwort in derblock
Definition in “sidenavigation.html”. Siehe Jinjas Abschnitt “Blockverschachtelung und Umfang”.. Ihr Beispiel ist{% block loop_item scoped %}{{ item }}{% endblock %}
welches erlaubtitem
um seine Definition aus der erbenden Vorlage zu ziehen.– John Crawford
31. März um 20:45 Uhr
Bevor Sie beginnen, müssen Sie diese Komponenten separat als reines HTML in andere HTML-Dateien schreiben. Diese Dateien sollten beispielsweise keine Jinja-Syntax enthalten. Danach laut Dokumentationkönnen Sie diese ganz einfach per Aufruf in Ihre template.html-Datei importieren {% include 'filename.html' %}
Code.