2011-12-24 14 views
10

的情况是:传递变量到神社进口或包括从父HTML文件

“你有一个变量,名为人里面包含了一些如姓名,地址等领域,你想传递到部分片的HTML” - 该解决方案可能是从客户的搜索例如

snippet.html

<div id="item"> 
    <ul> 
    <li> 
     <span>{{name}}</span> 
     <span>{{address}}</span> 
    <li> 
    </ul> 
</div> 

的mypage.html

结果

达到此目的的最佳方法是什么?在文档中它讲述了在任何地方传递上下文,但在渲染模板时,我认为这是一个相当大的对象。当然,将特定对象传递到每个模板会更容易?

回答

12

当你有一个模板到另一个,它获得它的上下文,因此,如果你通过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

关于包含文件的宏 – aWebDeveloper 2013-09-25 10:17:03

+4

这一令人沮丧的部分是什么,你不能然后进行可以这么说,你的小包含泛型足以不可知“调用变量”的名称。例如,如果我构建一个通用方法来分页对象列表,我通常不会将它们放在名为“对象”的容器中,它更像“动物”这样的特定对象。 – Dan 2015-01-12 19:54:46

+0

@Dan为什么不用宏来代替呢? – Achshar 2017-07-29 13:41:50

4

这是对MatToufoutu的回答的补充。

环境全局变量总是在宏中可用,但上下文变量不是。 要在导入宏可用的情况下,你必须使用与上下文导入时,如:

{% from "your_macros.html" import your_macro with context %}