Jinja2 und Kolben: Pass-Variablen in übergeordneten Vorlage, ohne Sie es in Kinder
Sagen wir, ich habe ein Basis-template mit einem header in es, und der Inhalt der header übergeben werden muss in der Vorlage.
<header>
You are logged in as {{ name }}
</header>
Diese Basis-template wird erweitert, die von vielen Seiten. Wie kann ich pass auf, dass die variable ohne übergabe an jedes einzelne Kind? Zum Beispiel, ich will nicht zu haben, dies zu tun:
render_template("child1.html", name=user.name)
render_template("child2.html", name=user.name)
render_template("child3.html", name=user.name)
etc...
denn wer weiß, wie viele untergeordnete Seiten, die ich haben könnte. Es fühlt sich nicht TROCKEN genug ist.
Ich eigentlich nie machen die Basis-Vorlage, nur seine Kinder, aber ich weiß nicht, wie sonst übergeben Daten.
Gibt es eine Möglichkeit, dies zu tun? Sollte ich nicht mit der Vererbung?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann ich schlage vor, Sie verwenden die Globale variable 'g' in der Flasche. Dies ist standardmäßig verfügbar in den jinja-templates. So brauchen Sie nicht zu kümmern, übergeben Sie es überall in der Basis-Vorlage oder Kinder. Nur sicherstellen, dass Sie es zuerst, wenn Sie sich einloggen
dann in den Vorlagen, nur dazu:
RuntimeError: working outside of application context
. Weiß jemand, wie man mit ihm umgehen?Müssen Sie die Verwendung von Kolben ist context-Prozessoren:
Sehen dies ähnlich ALSO Frage und Antwort.
Ein Beispiel, wie ich es mit (einfach app config-Einstellungen):
Welche gezogen werden von meinem Kolben config-Datei:
Dann rufen Sie diese in Ihrem Basis-Vorlage genau wie jedes andere Jinja2 variable: