Flask 跨多个模板包含边栏的正确方法?

Flask 跨多个模板包含边栏的正确方法?,flask,wtforms,Flask,Wtforms,我正试图找出最好的方法来包含一些边栏代码,这些代码将在我的几乎每一个模板上使用。例如,我的index.html是 {% extends "base.html" %} Hello, ... {% include 'sidebar.html' %} {% endblock %} 意见是: @app.route('/') @app.route('/index') def index(): # some stuff for my index page... form_s

我正试图找出最好的方法来包含一些边栏代码,这些代码将在我的几乎每一个模板上使用。例如,我的
index.html

{% extends "base.html" %}
    Hello, ...
    {% include 'sidebar.html' %}
{% endblock %}
意见是:

@app.route('/')
@app.route('/index')
def index():
    # some stuff for my index page...
    form_sidebar = sidebar()
    return render_template('index.html', indexdata=indexdata, form_sidebar=form_sidebar)
我的边栏表单是用

def sidebar():
    form_sidebar = MySideBarForm()  # defined in forms.py
    # do some sql stuff to initialize the form ...
    return form_sidebar
我的
sidebar.html
使用从
sidebar()
接收的数据


如果我以这种方式继续,那么我的每个视图函数都必须调用
sidebar()
,它们都必须传递varialbe
form\u sidebar
,并且每个模板都需要
{%include'sidebar.html%}
。有更好的方法吗?我认为理想情况下,我的
base.html
应该
{%include'sidebar.html
,但是我不知道如何为它提供
表单侧边栏
数据。

如果我没有弄错的话,你可以将你的
表单侧边栏
包含在全局
g
中,这在模板中是隐式可用的


若要提供
g
,您可以在请求之前在
@函数中全局执行该操作,并且在基本模板中包含边栏模板应该可以完成该工作。

谢谢。这就是我正在寻找的。