【问题标题】:Django template: how to show dict whose key has a dot in it? d['key.name']Django模板:如何显示其键中有一个点的dict? d['key.name']
【发布时间】:2012-08-01 19:36:59
【问题描述】:

我有一本这样的字典:

dict_name['keyname.with.manydots']

问题:我做不到

{{ dict_name.keyname.with.manydots }} 

我知道用 Django 的模板不可能做到这一点。但是你找到的最好的解决方法是什么?谢谢!

【问题讨论】:

  • 你试过自定义过滤器吗?

标签: django templates filter tags


【解决方案1】:

你可以写一个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" }}

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2016-01-16
      • 2010-12-26
      • 2019-11-24
      • 2019-01-08
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      相关资源
      最近更新 更多