在多个模板中包含侧边栏的正确方法是什么?

时间:2015-01-27 22:51:59

标签: 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_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(),它们都必须传递变量form_sidebar,并且每个模板都需要{{1} }}。有一个更好的方法吗?我认为理想情况下我的{% include 'sidebar.html' %}base.html,但我不知道如何为其提供{% include 'sidebar.html数据。

1 个答案:

答案 0 :(得分:2)

如果我没有弄错的话,您可以将form_sidebar包含在模板中隐式提供的全局g中。

要向g投放,您可以在@before_request修饰函数中全局投放,并在基础模板中包含侧边栏模板应该完成作业。