假设我有两条不同的路线共享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
?
答案 0 :(得分:2)
是的,只需添加一个if
块来检查变量,并包含所需的任何额外标记:
{% if extra_variable %}
<p>The extra variable is... "{{ extra_variable }}".</p>
{% endif %}
如果模板更新如此,您可以在路径中将额外变量传递给模板中的模板。
只有从路径传递extra_variable时,才会显示if
块内的标记。如果您需要执行的操作不仅仅是显示额外的变量,还可以在if
块中嵌套更多模板逻辑(for
s,if
等)。