首页 文章

使用变量名称的嵌套字典项的Django模板语法

提问于
浏览
0

在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] 遇到麻烦的原因

1 回答

  • 1

    你可以't do this in the template directly. You' ll需要使用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 %}
    

相关问题