Flask基于两条或更多条路线渲染相同的模板?

时间:2018-04-23 21:32:50

标签: flask jinja2

假设我有两条不同的路线共享10个中的9个项目,有没有办法使用相同的模板,但让jinja根据它的路线呈现不同的项目?

例如:

@app.route('/foo')
def foo():
    d = {'var1': 'item1', 'var2': 'item2',}
    return render_template('myTemp.html', d=d)

@app.route('/bar')
def bar():
    d = {'var1': 'item1', 'var2': 'item2',}
    extra_variable = 'some_extra_var'
    return render_template('myTemp.html', d=d, extra_variable=extra_variable )

有没有办法在模板上处理extra_variable

1 个答案:

答案 0 :(得分:2)

是的,只需添加一个if块来检查变量,并包含所需的任何额外标记:

{% if extra_variable %}
    <p>The extra variable is... "{{ extra_variable }}".</p>
{% endif %}

如果模板更新如此,您可以在路径中将额外变量传递给模板中的模板。

只有从路径传递extra_variable时,才会显示if块内的标记。如果您需要执行的操作不仅仅是显示额外的变量,还可以在if块中嵌套更多模板逻辑(for s,if等)。