我的webapp导航系统中有一个表格,每次呈现页面时都会填充最新信息。我怎样才能避免在每个view
中添加以下代码?
def myview():
mydict = code_to_generate_dict()
return render_template('main_page.html',mydict=mydict)
mydict
用于填充表格。该表将显示在每个页面上
答案 0 :(得分:23)
您可以使用Flask's Context Processors将全局变量注入jinja模板
以下是一个例子:
@app.context_processor
def inject_dict_for_all_templates():
return dict(mydict=code_to_generate_dict())
将新变量自动注入模板的上下文中, Flask中存在上下文处理器。上下文处理器在之前运行 模板被渲染并具有注入新值的能力 模板上下文。上下文处理器是返回a的函数 字典。然后合并该字典的键和值 使用模板上下文,适用于应用中的所有模板:
答案 1 :(得分:1)
编写自己的渲染方法确保自己不要重复该代码。然后在需要渲染模板时调用它。
def render_with_dict(template):
mydict = code_to_generate_dict()
return render_template(template, mydict=mydict)
def myview():
return render_with_dict('main_page.html')