我已经为一堆独立的小应用程序编写了一个通用的蓝图,作为python程序包。通常,这只是一个顶层模板和样式表,可为应用程序提供统一的设计。我想在顶层模板中显示当前应用的名称,但我不知道如何。似乎没有办法从应用程序注册的蓝图中进入应用程序上下文。
我已经尝试过了:
@blueprint.context_processor
def appinfo():
return { 'appname': flask.current_app.name }
,但是仅当模板由蓝图的视图功能之一呈现而不是从应用程序的视图功能呈现时,它才起作用。
答案 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)