2011-03-04 109 views
8

我使用python谷歌應用程序引擎與webapp框架,用jinja2模板替換django模板。是否可以從jinja2模板中訪問對象的key_name?

我知道你可以從一個處理方法中調用它像這樣得到一個對象的KEY_NAME:

goody = object.key().name() 

但是,它可以從模板邏輯中訪問KEY_NAME?像這樣?

{% for object in objectList %} 
{{object|key_name}} 
{% endfor %} 

顯然是不行的,但有一些過濾器或隱藏屬性,我可以用它來獲得在KEY_NAME的對象從模板中存儲有沒有處理方法中額外擺弄app引擎?

回答

7

的Jinja2允許你根據文檔這裏只是用()執行可調用,:http://jinja.pocoo.org/docs/templates/#other-operators

所以,這應該工作:

{% for instance in instance_list %} 
    {{ instance.key().name() }} 
{% endfor %} 
+0

我發誓我之前試過,它沒有工作。但我必須得到一些錯誤,因爲我現在嘗試了,而且工作正常。後續,這些可卡因有什麼開銷嗎?如果我需要爲很多對象執行此操作,我會更好地將值存儲在單獨的屬性中嗎? –

+0

取決於,函數調用是Python中最昂貴的操作之一。如果這是一段熱門的代碼,那麼你最好先把它們存儲在智能方式之前,以避免執行功能。如果這不是經常執行,那很好。小心過早的優化:) –

2

你可以做object.key.name Django的模板內訪問的AppEngine數據存儲對象鍵名

通常情況下,您可以訪問鍵名在Python代碼中通過object.key().name()

Django模板會自動嘗試幾種可能的方法來解釋object.key.name爲您提供價值。

相關問題