Django模板:如何显示其键中有一个点的dict? d [ 'key.name']

时间:2012-08-03 18:10:44

标签: django templates filter tags

我有这样的字典:

dict_name['keyname.with.manydots']

问题:我做不了

{{ dict_name.keyname.with.manydots }} 

我知道用Django的模板来做这件事是不可能的......但是你找到的最佳解决方案是什么?谢谢!

2 个答案:

答案 0 :(得分:4)

你可以写一个custom template filter

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 :(得分:2)

一种可能的解决方案是创建一个模板标签,其中字典作为变量,键作为参数。记得模拟Django失败的属性查找的默认行为,这不应该抛出错误,所以返回一个空字符串。

{{ dict_name|get_value:"keyname.with.manydots" }}

@register.filter
def get_value(dict_name, key_name):
    return dict_name.get(key_name, '')