Blog Logo

07-Apr-2024 ~ 2 min read

Making Variables Globally Available in Flask Templates


In Flask, you may need to make certain variables accessible to all templates without explicitly passing them in each render call. This can be useful for providing global data such as configuration settings, user authentication status, or commonly used values. Here’s how to achieve this:

1. Using Context Processors

Flask allows you to define context processors, which are functions that run before each template is rendered. Inside a context processor, you can add variables to the template context, making them globally available to all templates.

2. Registering Context Processors

To register a context processor, use the app.context_processor decorator. This decorator should be applied to a function that returns a dictionary of variables to be included in the template context.

Example: Below is a simple example demonstrating how to make a variable named app_name globally available in all templates:

from flask import Flask, render_template

app = Flask(__name__)

@app.context_processor
def inject_global_vars():
    app_name = "My Flask App"
    return dict(app_name=app_name)

@app.route('/')
def index():
    return render_template('index.html')

if __name__ == '__main__':
    app.run(debug=True)

3. Accessing in Templates

Once a variable is added using a context processor, you can access it directly in your templates using the specified variable name.

4. Use Case

This approach is handy for providing data that is common across multiple templates, such as site-wide configuration settings, user authentication status, or frequently used values like the current year or application name.

By following these steps, you can efficiently make certain variables globally available in Flask templates, reducing the need for repetitive variable passing in each render call.