mydict = {"key1":"value1", "key2":"value2"}
在Django模板中查找字典值的常规方法是 {{ 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
失败了 . 如何解决这个问题?
5 回答
编写自定义模板过滤器:
(我使用
.get
以便如果密钥不存在,则返回none . 如果你执行dictionary[key]
则会引发KeyError
然后 . )用法:
从循环中的字典中获取键和值:
我发现这更容易阅读,它避免了特殊编码的需要 . 无论如何,我通常需要键中的键和值 .
你不能默认 . 点是属性查找/键查找/切片的分隔符/触发器 .
但是你可以制作一个允许你传入参数的过滤器:
https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#writing-custom-template-filters
我有类似的情况 . 但是我使用了不同的解决方案 .
在我的模型中,我创建了一个执行字典查找的属性 . 在模板中,我然后使用该属性 .
在我的模型中: -
在我的模板中: -
对于我在我的应用程序中创建一个名为
template_filters.py
的python文件,其中包含以下内容用法就像culebrón所说: