Django 模板:如何显示密钥中有点的字典?d['key.name']



我有一本这样的字典:

dict_name['keyname.with.manydots']

问题:我不能做

{{ dict_name.keyname.with.manydots }} 

我知道用Django的模板是不可能做到这一点的。。但你发现的最好的作品是什么?谢谢

您可以编写一个自定义模板过滤器:

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" }}

一个可能的解决方案是创建一个以dictionary为变量、以key为参数的模板标记。记住,对于失败的属性查找,要模拟Django的默认行为,这不应该引发错误,所以返回一个空字符串。

{{ dict_name|get_value:"keyname.with.manydots" }}
@register.filter
def get_value(dict_name, key_name):
    return dict_name.get(key_name, '')

相关内容

最新更新