This event is emitted right before a template is rendered and can be used to inject values directly into the template context. The context is always provided and is a dictionary that can be modified.
It's important to know that this is not the only way to modify the template
context. Another method is to modify the underlying Jinja Environment on the environment directly. The
difference is that the globals from the
jinja_env are available in all
templates whereas the modified template context is only available in the
toplevel template. This becomes apparent when you are dealing with imported
template macros. A macro will not have access to values you provide here
unless they are explicitly passed to it.
The filename of the template is passed as
template but is only available
if the template was indeed loaded from the templates folder. There are many
more places where templates are rendered in those cases the value will
not be provided.
def on_process_template_context(self, context, **extra): context['my_variable'] = 'my value'