在Django模板中使用变量访问字典元素

0 投票
1 回答
1681 浏览
提问于 2025-04-18 17:00

情况是这样的。我们要渲染一个视图。

return render(request, 'test.html', {'db_object': db_object, 'dict': dict }

在模板中,我们现在想用 db_object.key 来访问字典。在Python中,通常你会这样做:dict[db_object.key]。在模板中,你可以用 {{ dict.some_key }} 来获取值。但是在接下来的情况下,你显然不能这样做:{{ dict.db_object.key }}

有没有办法做到这一点呢?

1 个回答

3

这个问题之前已经讨论过了,我找到的最佳解决办法是创建一个简单的自定义过滤器。如果那个链接失效了,这里有代码(虽然不是我写的,但我提供给你作为参考):

@register.filter 
def get_item(dictionary, key): return dictionary.get(key)

在模板中使用时:

{{ dict|get_item:object.key }}

当然,要确保在你的模板标签中调用load,这样它们才能被渲染器识别。

撰写回答