场景将是:
“你有一个名为person的变量,其中包含许多字段,如名称,地址等,你想传递给部分html” - 这个解决方案可能是搜索客户的结果,例如
snippet.html
<div id="item">
<ul>
<li>
<span>{{name}}</span>
<span>{{address}}</span>
<li>
</ul>
</div>
的mypage.html
<div id="result">
{% include "snippet.html" passing {{person}} %}
</div>
实现这一目标的最佳方法是什么。在文档中,它讨论了在任何地方传递上下文,但在我渲染模板时,这似乎是一个相当大的对象。当然,将特定对象传递到每个模板更容易吗?
答案 0 :(得分:13)
当您将模板包含在另一个模板中时,它可以访问其上下文,因此如果您将person
变量传递到mypage.html
的上下文,您将能够从您的上下文访问它导入的模板如下:
snippet.html:
<div id="item">
<ul>
<li>
<span>{{ person.name }}</span>
<span>{{ person.address }}</span>
</li>
</ul>
</div>
mypage.html:
<div id="result">
{% include 'snippet.html' %}
</div>
view.py:
def view(person_id):
person = Person.get(person_id) # or whatever source you get your data from
return render_template('mypage.html', person=person)
答案 1 :(得分:6)
这补充了MatToufoutu的答案。
环境全局变量始终在宏中可用,但上下文变量不是。 要在导入的宏中使用上下文,您必须在导入时使用 with context ,例如:
{% from "your_macros.html" import your_macro with context %}