2011-12-24 46 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 %}