2011-03-04 1 views
8

私はwebappフレームワークでpython google appエンジンを使用しています.janja2テンプレートをdjangoテンプレートに置き換えています。jinja2テンプレートの中からオブジェクトのkey_nameにアクセスできますか?

私はあなたがそうのようにそれを呼び出すことによって、ハンドラメソッド内からオブジェクトのたキー名を取得することができます知っている:

goody = object.key().name() 

をしかし、それは、テンプレートロジック内からたキー名にアクセスすることは可能でしょうか?このようなもの?

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

は明らかにそれは動作しませんが、いくつかのフィルタがありますか私は、オブジェクトがハンドラメソッド内の余分ないじることなく、テンプレート内からで保存されたキー名のApp Engineで取得するために使用できる属性を隠さ?

Jinja2のは、あなたがちょうどここにマニュアルに従って ()を使用することによって、呼び出し可能オブジェクトを実行することができます

答えて

7

http://jinja.pocoo.org/docs/templates/#other-operators

ので、これは動作するはずです:

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

私はそれを試したことを誓い、それは動作しませんでした。しかし、私は今試したので、何か間違っているはずです。うまくいきます。フォローアップ、これらのコール可能なコールにオーバーヘッドはありますか?私は多くのオブジェクトのためにこれを行う必要がある場合、別の属性に値を格納する方が良いでしょうか? –

+0

依存すると、関数呼び出しはPythonで最も高価な演算の1つです。これがホットなコードの場合は、機能を実行しないようにインテリジェントな方法で手前に保存する方がよいでしょう。これが頻繁に実行されない場合、それは正常です。早すぎる最適化に注意してください:) –

2

あなたはAppEngineのデータストアにアクセスするためのDjangoテンプレート内object.key.nameを行うことができますオブジェクトのキー名

通常、アクセスするのはキー名でPythonコードobject.key().name()

Djangoテンプレートは自動的にobject.key.nameを解釈するいくつかの方法を試してみます。

関連する問題