2009-07-27 54 views
1

是否有可能縮小包含的上下文。如何爲「包含」模板添加上下文?

例如,我有「爲」標記,從帖子陣列獲得 - 一個職位。比我wonna把這個帖子裏面的「包含」標籤呈現更詳細的上下文。有沒有自定義標籤?

+0

請編輯您的問題的清晰度 – Casebash 2010-06-20 02:06:08

回答

6

雖然我有一些問題,解釋你的問題,我相信你要找的是什麼就是什麼Django的稱之爲「包含標籤」。他們寫的很簡單:

>>> from django import template 
>>> register = template.Library() 
>>> @register.inclusion_tag('my_template.html') 
>>> def my_tag(post): 
>>>  return {'post': post} 

這應該去一個Python模塊名爲「templatetags」裏面其中一個應用程式內(不要忘記__init__.py!)。然後,您可以加載它(如果您將文件命名爲my_tag.py),則如下所示:{% load my_tag %}。每當您在該點之後使用{% my_tag post %}時,Django將自動包含並呈現模板my_template.html,並使用由該標記的返回值指定的上下文。有關更多信息,請參閱Django's custom template tags

0

使用{%包括「foo.html」%}標籤給出了foo.html模板訪問到被包括它的模板的完整環境。我不知道爲什麼你需要限制包含模板的上下文。

如果限制的背景下是一個真正的需要,那麼我會建議找在編寫執行你的包括但呈現與指定的上下文包括模板的自定義模板標籤。這是相對微不足道的,但是,聽起來好像還有更好的方法可以解決這個問題。

您可以找到有關在DjangoProject.com網站(this page)編寫自定義的模板標籤信息。

+0

雖然這是真的,但它有不必要的限制,所討論的變量需要是1)在視圖中預先計算,並且2)每次包含發生。通過包含標籤,模板設計人員可以控制這兩個因素。它們都是可行的選擇,但我個人認爲{%include%}是更受限制的選項。 – Cide 2009-07-27 17:07:39

相關問題