Changing jinja_env from a blueprint

flask, jinja2, python

Solution

Use the `Blueprint.app_template_global` decorator to register a global function to the jinja env.

uploader.app_template_global(views.generate_form_token)

Or in views.py:

@uploader.app_template_global
def generate_form_token():
    pass

Problem

I am trying to register a new jinja global on my blueprint using the `Blueprint` object. However, it appears that `Blueprint` objects do not have `jinja_env` attributes; how can I register a new jinja global attributes? Here's the `__init__.py` of the blueprint, this does not work: ``` from flask import Blueprint, current_app uploader = Blueprint('uploader', __name__, template_folder='templates') from . import views from . import models current_app.jinja_env.globals['form_token'] = views.generate_form_token ``` Nor does this: ``` uploader.jinja_env.globals['form_token'] = views.generate_form_token ```

Original source