我在Python(Django)中有一个嵌套字典,如下所示:
books =
{
1: { 1: 'Alice', 2: 'Bob', 3: 'Marta' },
2: { 1: 'Alice', 3: 'Marta' },
3: { 1: 'Alice', 2: 'Bob' },
}
现在在我的模板中,我想打印一个特定的项目,但只有它存在,例如书籍[4] [1] . 但如果我这样做,我得到:
{{ books[4][1] }}
Error: Could not parse the remainder
所以我做了一个检查:
{% if 4 in books %}
{% if 1 in books[4] %}
{{ books[4][1] %}
{% endif %}
{% endif %}
这也不起作用并给出解析错误(无法解析余数) . 如果我不确定它是否存在于字典中,那么在Django中打印嵌套字典值的正确方法是什么?
1 回答
Django模板语言故意与Python代码不同,因此不鼓励人们将业务逻辑写入其中 .
但模板逻辑足够强大,可以通过以点表示法写入项目来对项目执行项目获取 . 例如:
应该写成:
所以你可以这样写:
话虽如此,所有这些查找根本不是必需的 . 由于Django通常不会在查找失败时产生错误 . 在这种情况下,当需要打印时,它将回退到
TEMPLATE_STRING_IF_INVALID
字符串 . 这默认是空的,所以我们可以避免麻烦并写:如果元素不存在,将打印
settings.TEMPLATE_STRING_IF_INVALID
(如果未指定,则为空字符串) .如果要执行检查,可以直接在整个变量上使用
if
,如:检查这个"template variable"表达式是否得到解决,结果是否真实
True
.