如何将变量解释为字典索引

时间:2015-08-26 01:20:41

标签: python flask jinja2

我试图将整数映射到字符串字典的索引。 但是,没有替代发生。 如果我硬编码(例如um[2]),则替换是正确的。

什么是正确的完成方式?

数据库架构:

CREATE TABLE users (id integer primary key autoincrement, user text not null, um tinyint not null);

发电机:

users = [dict(id=row[0], name=row[1], um=row[2]) for row in cur.fetchall()]
um = ["Limited", "Lessimited", "EvenLessLimited", "SuperUser"];
return render_template('show_users.html', users=users, um=um)

模板:

{% for user in users %}
 {% set m = user.um|int %}
 <tr><td class="id">{{ user.id }}</td><td> {{ um[m] }}</td></tr>
{% endfor %}

1 个答案:

答案 0 :(得分:0)

您需要user["um"],而不是user.um

实际上,您应该想要user.um,但为此您可以使用&#39; namedtuple`:

from collections import namedtuple
User = namedtuple('User', 'rowid name um')
users = [User(*row) for row incur.fetchall()]
um = ["Limited", "Lessimited", "EvenLessLimited", "SuperUser"];
return render_template('show_users.html', users=users, um=um)

**模板*:

{% for user in users %}
  <tr>
    <td class="id">
      {{ user.rowid }}</td><td> {{ um[user.um] }}
    </td>
  </tr>
{% endfor %}