从蓝图更改 jinja_env

Pla*_*sma 3 python jinja2 flask

我正在尝试使用该对象在我的蓝图上注册一个新的 jinja 全局Blueprint。然而,对象似乎Blueprint没有jinja_env属性;如何注册新的 jinja 全局属性?

这是__init__.py蓝图,这不起作用:

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
Run Code Online (Sandbox Code Playgroud)

这也不是:

uploader.jinja_env.globals['form_token'] = views.generate_form_token
Run Code Online (Sandbox Code Playgroud)

dav*_*ism 5

使用Blueprint.app_template_global装饰器将全局函数注册到 jinja env。

uploader.app_template_global(views.generate_form_token)
Run Code Online (Sandbox Code Playgroud)

或者在views.py中:

@uploader.app_template_global
def generate_form_token():
    pass
Run Code Online (Sandbox Code Playgroud)