访问dict的值

2024-04-25 21:58:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用Pythons Flask构建小型管理器(学习python),Pythons Flask使用Jinja2模板引擎。我在用Peewee和我的数据库通话。你知道吗

我有一个密码字典,里面都有关于给定密码的信息。别针上的信息直接来自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 websitethis question,代码应该可以工作,因为我正在访问引脚状态, pin.id码以及引脚说明在回路内部。你知道吗

但事实并非如此——无论我尝试显示哪个属性,当使用{{ pin.description }}访问该属性时,它都不会给我任何信息。我注意到以下几点,可能会给你一些帮助

  1. 如果我在循环中生成一个{{ pin }},它将打印 字典。你知道吗
  2. 如果我在循环中做一个{{ pins[pin].description }},它会打印 描述正确。你知道吗

根据我对文档和相关问题的理解,应该可以在循环中使用{{ pin.description }}来显示当前值。你知道吗

谁能解释一下我的错误是什么吗?你知道吗


Tags: 模板信息id数据库密码flaskdataget
1条回答
网友
1楼 · 发布于 2024-04-25 21:58:36

问题是你编了一本词典,而不是一张单子。当您通过for pin in pins迭代字典时,您是在迭代键,而不是值-因此在每次迭代中您都会得到3、5、7等值中的一个。这些值显然没有description这样的属性。你知道吗

相反,请使用values()方法:

{% for pin in pins.values() %}

或者你可以考虑先使用一个列表。你知道吗

相关问题 更多 >