mydict = {"key1":"value1", "key2":"value2"}
查找在Django模板字典值的常规方法是{{ mydict.key1 }}, {{ mydict.key2 }}。如果键是循环变量怎么办?即:
{{ mydict.key1 }}
{{ mydict.key2 }}
{% for item in list %} # where item has an attribute NAME {{ mydict.item.NAME }} # I want to look up mydict[item.NAME] {% endfor %}
mydict.item.NAME失败。如何解决?
mydict.item.NAME
编写自定义模板过滤器:
from django.template.defaulttags import register ... @register.filter def get_item(dictionary, key): return dictionary.get(key)
(我.get这样使用,如果不存在该键,则不返回任何键。如果执行dictionary[key]此操作,则将引发一个KeyErrorthen。)
dictionary[key]
KeyError
用法:
{{ mydict|get_item:item.NAME }}