11

我在 Google App Engine 上使用 Jinja2。我有一个呈现通用模板的 ListView。目前,我不确定我想要显示什么,所以我只想显示模型的每个属性。

有没有办法遍历对象以在表格单元格中输出每个对象?

例如:

{% for record in records %}
<tr>
{% for attribute in record %}
<td>{{ attribute }}</td>
{% endfor %}
</tr>
{% endfor %}

任何建议表示赞赏。谢谢

4

2 回答 2

26

在上下文中设置getattr是一个坏主意(并且已经有内置的 filter attr)。Jinja2 提供类似 dict的属性访问。

我想你应该这样做:

{% for record in records %}
    <tr>
    {% for attribute in record.properties() %}
        <td>{{ record[attribute] }}</td>
    {% endfor %}
    </tr>
{% endfor %}

这个更好...

于 2014-03-26T14:37:05.860 回答
4

这将在简单的 python 代码中实现:

for attribute in record.properties():
    print '%s: %s' % (attribute, getattr(record, attribute))

您可以将getattr函数放在上下文中,以便在 jinja2 中调用它,如下所示:

{% for record in records %}
    <tr>
    {% for attribute in record.properties() %}
        <td>{{ getattr(record, attribute) }}</td>
    {% endfor %}
    </tr>
{% endfor %}
于 2012-06-06T20:09:54.847 回答