Flask 是否基于两条或多条管线渲染同一模板?

Flask 是否基于两条或多条管线渲染同一模板?,flask,jinja2,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':

假设我有两条不同的路线,共享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 )

是否有方法处理模板上的
额外变量

是的,只需添加一个
if
块来检查变量,并包括任何需要的额外标记(如果存在):

{% if extra_variable %}
    <p>The extra variable is... "{{ extra_variable }}".</p>
{% endif %}
{%if额外变量%}
额外的变量是。。。“{{extra_variable}}”

{%endif%}
这样更新模板后,您就可以将问题中的额外变量从路由传递到模板

仅当从路由传递额外的_变量时,
if
块内的标记才会显示。如果需要做的不仅仅是显示额外变量,还可以在
if
s块中嵌套更多的模板逻辑(
if
s、
for
s等)