访问字典的值
Access to a dict's values
我目前正在使用 Pythons Flask 构建小型管理器(学习 python),它使用 Jinja2 模板引擎。我正在使用 Peewee 与我的数据库对话。
我有一本 pin 字典,其中都包含给定 pin 的信息。图钉上的信息直接来自 Peewee,如下所示:
pins = {}
pins[3] = Pin.get(Pin.id == 3)
pins[5] = Pin.get(Pin.id == 5)
pins[7] = Pin.get(Pin.id == 7)
pins[8] = Pin.get(Pin.id == 8)
(仅以这四个为例)
在我的模板中,我正在遍历这四个引脚并希望显示我的数据库信息(例如描述、状态和 ID),因此我编写了以下代码:
{% for pin in pins %}
{% if pin.state %}
<input type="checkbox" checked="checked" data-toggle="toggle" data-pin="{{ pin.id }}">
{% else %}
<input type="checkbox" data-toggle="toggle" data-pin="{{ pin.id }}" ?>
{% endif %}
{{ pin.description }}
<br>
{% endfor %}
根据 jinja2 website and this question 代码应该可以工作,因为我正在循环内访问 pin.state、pin.id 和 pin.description。
但事实并非如此——无论我尝试显示哪个 属性,当我使用 {{ pin.description }}
访问 属性 时,它什么也没有给我。我注意到以下内容,可能会有所帮助
- 如果我在循环中创建一个
{{ pin }}
它会打印当前键
字典。
- 如果我在循环中创建一个
{{ pins[pin].description }}
它会打印
正确的描述。
根据我对文档和链接问题的理解,应该可以在循环中使用 {{ pin.description }}
来显示当前值。
任何人都可以阐明我的错误是什么吗?
问题是你制作的是字典,而不是列表。当您通过 for pin in pins
遍历字典时,您是在遍历 键 ,而不是值 - 因此在每次迭代中您将获得 3、5、7 等中的一个。那些值显然没有 description
.
这样的属性
而是使用 values()
方法:
{% for pin in pins.values() %}
或者您可能首先考虑使用列表。
我目前正在使用 Pythons Flask 构建小型管理器(学习 python),它使用 Jinja2 模板引擎。我正在使用 Peewee 与我的数据库对话。
我有一本 pin 字典,其中都包含给定 pin 的信息。图钉上的信息直接来自 Peewee,如下所示:
pins = {}
pins[3] = Pin.get(Pin.id == 3)
pins[5] = Pin.get(Pin.id == 5)
pins[7] = Pin.get(Pin.id == 7)
pins[8] = Pin.get(Pin.id == 8)
(仅以这四个为例)
在我的模板中,我正在遍历这四个引脚并希望显示我的数据库信息(例如描述、状态和 ID),因此我编写了以下代码:
{% for pin in pins %}
{% if pin.state %}
<input type="checkbox" checked="checked" data-toggle="toggle" data-pin="{{ pin.id }}">
{% else %}
<input type="checkbox" data-toggle="toggle" data-pin="{{ pin.id }}" ?>
{% endif %}
{{ pin.description }}
<br>
{% endfor %}
根据 jinja2 website and this question 代码应该可以工作,因为我正在循环内访问 pin.state、pin.id 和 pin.description。
但事实并非如此——无论我尝试显示哪个 属性,当我使用 {{ pin.description }}
访问 属性 时,它什么也没有给我。我注意到以下内容,可能会有所帮助
- 如果我在循环中创建一个
{{ pin }}
它会打印当前键 字典。 - 如果我在循环中创建一个
{{ pins[pin].description }}
它会打印 正确的描述。
根据我对文档和链接问题的理解,应该可以在循环中使用 {{ pin.description }}
来显示当前值。
任何人都可以阐明我的错误是什么吗?
问题是你制作的是字典,而不是列表。当您通过 for pin in pins
遍历字典时,您是在遍历 键 ,而不是值 - 因此在每次迭代中您将获得 3、5、7 等中的一个。那些值显然没有 description
.
而是使用 values()
方法:
{% for pin in pins.values() %}
或者您可能首先考虑使用列表。