mydict = {"key1":"value1", "key2":"value2"}
在Django模板中查找字典值的常規方法是{{mydict.key1}},{{mydict.key2}}。如果鍵是循環變量怎么辦?即:
{% for item in list %} # list中元素,都有一個NAME屬性 {{ mydict.item.NAME }} # 取出字典中相對應的NAME屬性的key對應的value {% endfor %}
mydict.item.NAME失敗。如何解決這個問題?
item.NAME是可以取出來的,但是他只是一個單純的字符串而已。 是不能總字典中通過 點語法取值的。
編寫自定義模板過濾器:
from django.template.defaulttags import register ... @register.filter def get_item(dictionary, key): return dictionary.get(key)
(我使用.get,所以如果鍵不存在,它返回None。如果你使用 dictionary[key],如果字典中沒有這個key 它會引發一個KeyError)。
用法:
{% for item in list %} # list中元素,都有一個NAME屬性
{{ mydict|get_item:item.NAME }}
{% endfor %}
