カスタムテンプレートタグは、おそらくオブジェクトを再構成したくない場合にここに移動する唯一の方法です。任意の文字列キーで辞書にアクセスするには、this questionへの答えが良い例です。怠け者のために
:
あなたがそうのように使用
from django import template
register = template.Library()
@register.simple_tag
def dictKeyLookup(the_dict, key):
# Try to fetch from the dict, and if it's not found return an empty string.
return the_dict.get(key, '')
:
{% dictKeyLookup your_dict_passed_into_context "phone-number" %}
あなたは任意の文字列名を使用して、オブジェクトの属性にアクセスしたい場合は、以下を使用することができます。
from django import template
register = template.Library()
@register.simple_tag
def attributeLookup(the_object, attribute_name):
# Try to fetch from the object, and if it's not found return None.
return getattr(the_object, attribute_name, None)
次のように使用します。
{% attributeLookup your_object_passed_into_context "phone-number" %}
あなたも、サブ属性のための(「__」のような)文字列の区切り文字のいくつかの並べ替えを思い付くことができますが、
私はこのソリューションを使用しましたが、それはタグからフィルターまでです。ありがとうございました! – jthompson
これは間違いなく動作しますが、dictを値として含むdictの中にあったキーにはどのようにアクセスしますか? – Kim