我有一本这样的字典:
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" }}
一种可能的解决方案是创建一个模板标签,其中字典作为变量,键作为参数。请记住模拟 Django 对失败的属性查找的默认行为,这不应该引发错误,因此返回一个空字符串。
{{ dict_name|get_value:"keyname.with.manydots" }}
@register.filter
def get_value(dict_name, key_name):
return dict_name.get(key_name, '')