Google app engine 在Jinja2中迭代对象?
我正在谷歌应用程序引擎上使用Jinja2。我有一个ListView,它呈现一个通用模板。目前,我不确定要显示什么,所以我只想显示模型的每个属性 有没有一种方法可以迭代对象以输出表单元格中的每个对象 例如:Google app engine 在Jinja2中迭代对象?,google-app-engine,jinja2,Google App Engine,Jinja2,我正在谷歌应用程序引擎上使用Jinja2。我有一个ListView,它呈现一个通用模板。目前,我不确定要显示什么,所以我只想显示模型的每个属性 有没有一种方法可以迭代对象以输出表单元格中的每个对象 例如: {% for record in records %} <tr> {% for attribute in record %} <td>{{ attribute }}</td> {% endfor %} </tr> {% endfor %} {%
{% for record in records %}
<tr>
{% for attribute in record %}
<td>{{ attribute }}</td>
{% endfor %}
</tr>
{% endfor %}
{%用于记录%中的记录]
{记录%中属性的%s}
{{attribute}}
{%endfor%}
{%endfor%}
谢谢你的建议。
谢谢这将在简单的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 %}
{%用于记录%中的记录]
{record.properties()%%中的属性为%
{{getattr(记录,属性)}
{%endfor%}
{%endfor%}
在上下文中设置getattr
是个坏主意(而且已经有了内置的过滤器)。Jinja2提供对属性的访问
我想你应该:
{% for record in records %}
<tr>
{% for attribute in record.properties() %}
<td>{{ record[attribute] }}</td>
{% endfor %}
</tr>
{% endfor %}
{%用于记录%中的记录]
{record.properties()%%中的属性为%
{{记录[属性]}}
{%endfor%}
{%endfor%}
这是更好的 您不应该将“getattr”分配给jinja上下文,而应该使用“类似dict”的语法。请检查我上面的答案。我猜这个回答是不正确的。即使使用attr?我最终还是使用了loop.changed,因为我所需要做的就是检查它是否发生了变化,所以我可能因为尝试使用您的方法而使我的生活过于复杂。也许我只是使用了错误的工具,所以我的编程不起作用……;)