2011-03-04 15 views
8

django şablonları için jinja2 şablonlarını kullanarak webapp çerçevesine sahip python google uygulama motorunu kullanıyorum.Bir jinja2 şablonunun içinden bir nesnenin key_name'sine erişmek mümkün mü?

goody = object.key().name() 

Ama mümkün şablon mantığı içinden key_name'ı erişmek için:

seni o kadar gibi arayarak bir işleyici yöntemiyle içinden bir nesnenin key_name'ı alabilirsiniz biliyor musunuz? Böyle bir şey mi?

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

Açıkçası bu işe yaramazsa, ancak bazı filtre var ya da ben bir nesne işleyicisi yöntemi içinde ekstra işe yaramaz olmadan şablondan içinden depolanır KEY_NAME uygulama motoruna ulaşmak için kullanabileceğiniz öznitelik gizli?

cevap

7

jinja2 burada belgelere göre sadece () kullanarak, callables çalıştırmasına izin veriyor: Yani http://jinja.pocoo.org/docs/templates/#other-operators

, bu çalışması gerekir:

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

Yemin ederim bunu daha önce denedim ve işe yaramadı. Ama yanlış bir şey almalıydım, çünkü şimdi denedim ve iyi çalışıyor. Takip, bu callables için herhangi bir ek yük var mı? Bunu çok fazla nesne için yapmam gerekiyorsa, değeri ayrı bir özellikte saklamaktan daha mı iyi olurum? –

+0

Bağlı olarak, işlev çağrıları Python'daki en pahalı işlemlerden biridir. Eğer bu, sıcak bir kod parçasıysa, o zaman, işlevleri yürütmekten kaçınmak için elinizi akıllı bir şekilde kullanmadan önce saklamanız daha iyi olur. Bu sık sık yapılmazsa, o zaman iyidir. Erken optimizasyon konusunda dikkatli olun :) –

2

Sen object.key.name yapabilirsiniz Django şablonu içinde appengine veri deposuna erişmek için nesnenin anahtar adı

Normal olarak, anahtar adı python kodunda object.key().name()

Django şablonu, size değer vermek için object.key.name'u yorumlamak için birkaç olası yolu otomatik olarak dener.

İlgili konular