4

次のような辞書があります。

dict_name['keyname.with.manydots']

問題: できない

{{ dict_name.keyname.with.manydots }} 

Django のテンプレートではこれを行うことができないことはわかっています..しかし、あなたが見つけた最善の回避策は何ですか? ありがとう!

4

2 に答える 2

6

カスタム テンプレート フィルターを作成できます。

from django import template

register = template.Library()

@register.filter
def get_key(value, arg):
    return value.get(arg, None)

そしてあなたのテンプレートで

{{ my_dict|get_key:"dotted.key.value" }}
于 2012-08-03T18:47:52.263 に答える
3

考えられる解決策の 1 つは、ディクショナリを変数として、キーを引数としてテンプレート タグを作成することです。失敗した属性ルックアップに対する Django のデフォルトの動作をエミュレートすることを忘れないでください。これはエラーをスローしないため、空の文字列を返します。

{{ dict_name|get_value:"keyname.with.manydots" }}

@register.filter
def get_value(dict_name, key_name):
    return dict_name.get(key_name, '')
于 2012-08-03T18:47:42.053 に答える