本文介绍了使用 Flask 将变量传递给所有 Jinja2 模板的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的 web 应用程序的导航系统中有一个表格,每次呈现页面时都会填充最新信息.如何避免在每个 view 中放置以下代码?

def myview():mydict = code_to_generate_dict()return render_template('main_page.html',mydict=mydict)

mydict 用于填充表格.表格将显示在每个页面上

解决方案

您可以使用 Flask 的上下文处理器 将全局变量注入您的 jinja 模板

这是一个例子:

@app.context_processordef injection_dict_for_all_templates():返回 dict(mydict=code_to_generate_dict())

要自动将新变量注入模板的上下文中,Flask 中存在上下文处理器.上下文处理器在模板被渲染并能够将新值注入模板上下文.上下文处理器是一个函数,它返回一个字典.然后合并此字典的键和值使用模板上下文,对于应用中的所有模板:

I have a table in the navigation system of my webapp that will be populated with up-to-date information each time a page is rendered. How could I avoid putting the following code in each view?

def myview():
    mydict = code_to_generate_dict()
    return render_template('main_page.html',mydict=mydict)

mydict is used to populate the table. The table will show up on each page

解决方案

You can use Flask's Context Processors to inject globals into your jinja templates

Here is an example:

@app.context_processor
def inject_dict_for_all_templates():
    return dict(mydict=code_to_generate_dict())

这篇关于使用 Flask 将变量传递给所有 Jinja2 模板的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-28 05:18