如何使用Python和Flask呈现包含两个列表的jinja html列表?

2024-09-25 10:33:11 发布

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

我正在使用一个简单的Python连接处理一个动态表,其中包含一些从数据库中提取的条目。我正在使用Flask和Jinja来呈现HTML

为了实现这一点,我使用cur.fetchall()

cur.execute('SELECT * FROM conceptos WHERE conceptos.conceptoTipo = 1')
data = cur.fetchall()

但是,我感兴趣的是修改每个条目的特定值,在本例中是第9位的值。为此,我创建了一个列表,并使用for遍历数据中的条目,如下所示:

x = []
for i in data:
    x.append(i[9]+1) #Just adding 1 to the numeric value for testing the change.

最后,我使用render_模板返回两个变量:

return render_template('descuentosBeneficiarios.html', conceptos = data, operas = x)

在HTML中,我使用Jinja2在一个简单的表中动态地公开变量:

{% for concepto in conceptos %}

<tr>
  <!-- Recorrer Campos de Tabla-->
  <td>{{concepto.0}}</td>
  <td>{{operas}}</td>
  <td>{{concepto.2}}</td>
  <td>{{concepto.3}}</td>
  <td>{{concepto.4}}</td>
  <td>{{concepto.5}}</td>
  <td>{{concepto.6}}</td>
  <td>{{concepto.7}}</td>
  <td>{{concepto.8}}</td>
  <td>{{concepto.9}}</td>
  <td>{{concepto.10}}</td>
  <td>{{concepto.11}}</td>
  <td>
</tr>
{% endfor %}

因此,对于每一行,我都会在第二列中获取operas列表中的所有值,我只需要第一行的值,第二行的值,依此类推,但我不知道如何做到这一点

谢谢你所做的一切


Tags: thein列表fordatahtml动态条目
1条回答
网友
1楼 · 发布于 2024-09-25 10:33:11

我这边有很多假设,但是如果operas的长度等于conceptos中元素的长度,您可以使用loop.index来访问所需的元素

{% for concepto in conceptos %}
<tr>
  <td>{{concepto.0}}</td>
  <td>{{operas[loop.index]}}</td>
  <td>...</td>
</tr>

但是如果您只需要修改data中的一个值,为什么要使用第二个列表?这不会解决问题:

for i in data:
    i[9] += 1

或者,如果您需要原始值:

for i in data:
    i.append(i[9] + 1)

这样你就可以把它作为第12个元素

正如我所说,有很多假设

相关问题 更多 >