我的蓝印烧瓶应用程序周围的许多路线将需要发送'边栏数据'到金贾。
我在寻找最有效的方法。它们必须比将我的“generate_sidebar_data()”函数导入到每个蓝图中更好,反复说:
var1, var2, var3 = generate_sidebar_data()
然后用“render_template”发送它们:
return render_template('template.html',
var1=var1,
var2=var2,
var3=var3
)
我想要的是一个decorator,我可以把它放在路由上,它将做上面所做的相同的事情(运行函数并将vars发送到jinja),但我不知道这是否可能。如何从decorator函数内部向jinja发送变量?
@blueprint.route('/')
@include_sidebar_data
def frontpage():
return render_template('template.html')
您可以使用上下文处理器(http://flask.pocoo.org/docs/api/#flask.Flask.context_processor):
UPD:我更喜欢下一个示例,如果decorator用于多个视图函数,则效果更好:
我将提出一些比使用decorator或template方法或类似的方法更简单的方法:
是的,只是一个功能。这就是你真正需要的,不是吗?有关灵感,请参见this烧瓶片段。它在不同的背景下,做着完全相同的事情。
您可以创建这样的decorator函数:
相关问题 更多 >
编程相关推荐