Python 如何将数据传递到flask中的布局模板

Python 如何将数据传递到flask中的布局模板,python,flask,flask-sqlalchemy,Python,Flask,Flask Sqlalchemy,我对flask和jinja模板不熟悉。 我知道如何将数据发送到模板文件,但我想知道如何将数据(而不是内容)发送到由模板扩展的布局模板 我有index.html、about.html和contact.html 对于这些html文件,我在layout.html中有常见的页眉和页脚代码 index.html代码 下面是显示我的标题的图片 在这里,时尚和珠宝是我的分类 民族风格、吊环、篮球等是我的分类 我想通过for循环(python:multi-leveldictionary)将这些类别和子类别填充

我对flask和jinja模板不熟悉。 我知道如何将数据发送到模板文件,但我想知道如何将数据(而不是内容)发送到由模板扩展的布局模板

我有index.html、about.html和contact.html 对于这些html文件,我在layout.html中有常见的页眉和页脚代码

index.html代码 下面是显示我的标题的图片

在这里,时尚和珠宝是我的分类 民族风格、吊环、篮球等是我的分类

我想通过for循环(python:multi-leveldictionary)将这些类别和子类别填充到layout.html(在每个页面上都进行了扩展)中

在其他html文件中,我们可以按如下方式发送数据:

return render_template("result.html",result = result)
但是在layout.html中,我们不直接渲染它,如何传递数据呢

请帮忙


提前感谢。

如果在每条路线中定义或引用了它,则您应该像平常一样通过路线传递它,例如:

return render_template("index.html", menu=menu)
这将允许layout.html呈现变量,如{{menu}或{%for menu%}中的项等(取决于您构建菜单的方式),即使index.html是从它扩展而来的

也就是说,必须定义或引用它并在每一条路线中传递它(索引、关于、联系或更多,如果站点增长)可能并不理想,因此您可以在路线之前使用上下文处理器

@app.context_processor
def inject_menu():

    # Fill in with your actual menu dictionary:
    menu = {}

    return dict(menu=menu)

这将使每个路由/视图都可以访问该数据。以下是有关上下文处理器的信息:

是的,定义或引用上下文并在每一条路径中传递它并不理想,@Katie非常感谢,它在我的代码和知识方面帮助了我。
@app.context_processor
def inject_menu():

    # Fill in with your actual menu dictionary:
    menu = {}

    return dict(menu=menu)