Flask + Jinja: gegevens doorgeven aan een basissjabloon/alle sjablonen

Ik heb een methode die gegevens retourneert die nodig zijn in mijn basissjabloon (inhoud voor een globale voettekst).

Hoe geef je (1) een variabele door aan de basissjabloon (die andere sjablonen uitbreiden) of (2) geef je een variabele door aan alle sjablonen wereldwijd zonder deze expliciet toe te voegen in een aanroep van render_template?


Antwoord 1, autoriteit 100%

Van flask-documenten: Flask’s contextprocessors

Om nieuwe variabelen automatisch in de context van een sjabloon te injecteren,
contextprocessors bestaan ​​in Flask. Contextprocessors worden uitgevoerd voordat de
sjabloon wordt gerenderd en heeft de mogelijkheid om nieuwe waarden te injecteren in
de sjablooncontext. Een contextprocessor is een functie die a . retourneert
woordenboek. De sleutels en waarden van dit woordenboek worden vervolgens samengevoegd
met de sjablooncontext, voor alle sjablonen in de app:

Voorbeeld uit documenten:

@app.context_processor
def inject_user():
    return dict(user=g.user)

Merk op dat dit voorbeeld de variabele ggebruikt, die al toegankelijk is in sjablonen.

Other episodes