【问题标题】:Django template syntax for nested dictionary item using variable names使用变量名的嵌套字典项的 Django 模板语法
【发布时间】:2018-07-01 17:02:44
【问题描述】:

在 Django 模板页面上,我试图访问嵌套字典中的值。

books = 
 { 
   1: { 1: 'Alice', 2: 'Bob', 3: 'Marta' }, 
   2: { 1: 'Alice', 3: 'Marta' }, 
   3: { 1: 'Alice', 2: 'Bob' }, 
 }

在我的页面某处,我有这两个变量

info.id = 1
detail.id = 2

我想要做的是打印(如果存在)项目books[1][2],或者换句话说books[info.id][detail.id]。我遇到了麻烦,因为我无法访问这个嵌套变量。这得到了solved here。但是,提出的解决方案是使用点符号访问嵌套的字典项。但问题是这在使用变量时似乎不起作用。使用这种逻辑,我会这样做:

{{ books.info.id.detail.id }}

但这不会产生任何结果。使用变量访问字典中的项目时,我应该如何处理这种情况?请注意,实际项目可能存在也可能不存在,这就是我在使用 books[info.id][detail.id] 时遇到问题的原因

【问题讨论】:

    标签: python django dictionary


    【解决方案1】:

    您不能直接在模板中执行此操作。您需要使用custom template tag。这会起作用:

    @register.simple_tag
    def nested_get(dct, key1, key2):
        return dct.get(key1, {}).get(key2)
    

    现在你可以在模板中使用它了:

    {% load my_tags_library %}
    {% nested_get books item.id detail.id %}
    

    【讨论】:

    • 是的是的!非常感谢,这解决了我的问题,为此苦苦挣扎了几个小时。
    猜你喜欢
    • 2014-03-04
    • 2021-03-28
    • 2021-01-16
    • 2021-01-18
    • 2017-10-12
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-27
    相关资源
    最近更新 更多