11

GoogleAppEngineでJinja2を使用しています。ジェネリックテンプレートをレンダリングするListViewがあります。現時点では、何を表示したいかが正確にわからないため、モデルの各属性を表示したいだけです。

オブジェクトを反復処理して、テーブルセルにそれぞれを出力する方法はありますか?

例えば:

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

アドバイスをいただければ幸いです。ありがとう

4

2 に答える 2

26

コンテキストに設定getattrすることは悪い考えです(そして、すでに組み込みのフィルターがあります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 に答える