如何从蓝图模板中访问应用程序名称?

时间:2018-10-29 17:19:30

标签: flask

我已经为一堆独立的小应用程序编写了一个通用的蓝图,作为python程序包。通常,这只是一个顶层模板和样式表,可为应用程序提供统一的设计。我想在顶层模板中显示当前应用的名称,但我不知道如何。似乎没有办法从应用程序注册的蓝图中进入应用程序上下文。

我已经尝试过了:

@blueprint.context_processor
def appinfo():
    return { 'appname': flask.current_app.name }

,但是仅当模板由蓝图的视图功能之一呈现而不是从应用程序的视图功能呈现时,它才起作用。

2 个答案:

答案 0 :(得分:2)

blueprint.app_context_processor()可以解决问题。

答案 1 :(得分:0)

使用Blueprint.context_processor decorator意味着仅针对由蓝图处理的请求才调用该函数。命名空间很棒!

如果您希望每个模板(应用程序和蓝图)中都可以使用“ appname”,则向Flask.context_processor注册上下文处理器应该满足这一要求。

app = Flask(__name__)

@app.context_processor
def appinfo():
    return dict(appname=app.name)