首页 > 解决方案 > Django 模板语言

问题描述

“dishList”是“dish”对象的列表,“dish”对象包括一个“id”字段。例如:

dishList = [dish1, dish2, dish3, ...]
dish1.id = 1

“dishCount”是 python 中的字典类型,其中包含每道菜的数字。例如:

dishCount = { dish1.id: 0, dish2.id: 0, ...}

我的问题是在这个 for 循环中:

{% for d in dishList %}

我如何评估菜“d”的数量?我想使用{{ dishCount.(d.id) }},但它不起作用。

无法解析剩余部分:来自“dishCount.(d.id)”的“(d.id)”

标签: djangodjango-templates

解决方案


我如何评估菜“d”的数量?

Django 的模板语言被故意限制为不允许下标和函数调用(带参数)。严格来说,您可以为此使用模板过滤器,或者使用jinja 之类的模板引擎。

然而,它受到限制的原因更有趣:它旨在防止用户在模板中编写业务逻辑。通常最好把它写在视图中。

因此,您可以为菜肴添加属性,例如:

dishList = [dish1, dish2, dish3]
dishCount = { dish1.id: 0, dish2.id: 0}
for dish in dishList:
    dish.count = dishCount[dish.id]

然后你可以用以下方式渲染它:

{% for d in dishList %}
    {{ d.count }}
{% endfor %}

推荐阅读