Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 在Jinja2中迭代对象?_Google App Engine_Jinja2 - Fatal编程技术网

Google app engine 在Jinja2中迭代对象?

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 %} {%

我正在谷歌应用程序引擎上使用Jinja2。我有一个ListView,它呈现一个通用模板。目前,我不确定要显示什么,所以我只想显示模型的每个属性

有没有一种方法可以迭代对象以输出表单元格中的每个对象

例如:

{% 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,因为我所需要做的就是检查它是否发生了变化,所以我可能因为尝试使用您的方法而使我的生活过于复杂。也许我只是使用了错误的工具,所以我的编程不起作用……;)