次のような辞書があります。
dict_name['keyname.with.manydots']
問題: できない
{{ dict_name.keyname.with.manydots }}
Django のテンプレートではこれを行うことができないことはわかっています..しかし、あなたが見つけた最善の回避策は何ですか? ありがとう!
カスタム テンプレート フィルターを作成できます。
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" }}
考えられる解決策の 1 つは、ディクショナリを変数として、キーを引数としてテンプレート タグを作成することです。失敗した属性ルックアップに対する Django のデフォルトの動作をエミュレートすることを忘れないでください。これはエラーをスローしないため、空の文字列を返します。
{{ dict_name|get_value:"keyname.with.manydots" }}
@register.filter
def get_value(dict_name, key_name):
return dict_name.get(key_name, '')