56

I have a method that returns data which is needed in my base template (content for a global footer).

How do either (1) pass a variable into the base template (which other templates extend) or (2) pass a variable to all templates globally without explicitly adding it in a call to render_template?

okoboko
  • 4,332
  • 8
  • 40
  • 67

1 Answers1

70

From flask docs: Flask's Context Processors

To inject new variables automatically into the context of a template, context processors exist in Flask. Context processors run before the template is rendered and have the ability to inject new values into the template context. A context processor is a function that returns a dictionary. The keys and values of this dictionary are then merged with the template context, for all templates in the app:

Example from docs:

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

Note that this example uses the g variable, which is already accessible in templates.

hansaplast
  • 11,007
  • 2
  • 61
  • 75
Gohn67
  • 10,608
  • 2
  • 29
  • 35
  • 8
    But this would add to all templates right? What if I wanted to add only in certain views? – Mojimi Jul 03 '19 at 13:35