これは私のコードです:
{% for i,j in enumerate(a) %}
{{i}} ,{{j}}
{% endfor%}
しかし、エラーが表示されます。enumerate
メソッドを実行できないと思います。
では、Djangoテンプレートでenumerate
を実行する方法、
ありがとう
テンプレートサブシステムには、for/endforブロックに組み込まれたいくつかの特別な構成要素があり、enumerate
を呼び出さなくてもループの現在のインデックスにアクセスできます。
{% for j in a %}
{{ forloop.counter0 }}, {{ j }}
{% endfor %}
このスニペットは当面の問題を解決しますが、Pythonビルトインおよび他のPython内部のDjangoテンプレートの場合、サンドボックスが提供/適用するサンドボックスを誤解している可能性があります。
{{ forloop.counter }}
または{{ forloop.counter0 }}
同じ効果の場合、後者は0でインデックス付けされるため、enumerate
に似ています。
Djangoテンプレートはプレゼンテーション層を構成し、ロジック用ではありません。 docs から
プログラミングのバックグラウンドがある場合、またはプログラミングコードを直接HTMLに混在させる言語に慣れている場合は、Djangoテンプレートシステムは単なる=ではないことに注意してください。 Python HTMLに埋め込まれています。これは設計によるものです。テンプレートシステムは、プレゼンテーションを表現するためのものであり、プログラムのロジックではありません。
Djangoで同じ機能を使用するには、ビューでロジックを完了する必要があります。
views.py
def my_view(request, ...):
....
enumerated_a = enumerate(a);
....
return render_to_response('my_template.html', {'enumerated_a ': enumerated_a }..)
現在、enumerate
関数は、反復可能な列挙オブジェクトを返します。
my_template.html
{% for index, item in enumerated_a %}
{{ index }},{{ item }}
{% endfor %}
おそらく列挙型リストに変更して、そのように使用することもできると思いますが。
{% for item in a %}
{{ forloop.counter }}, {{ item }}
{% endfor %}
ただし、テンプレート内で関数を使用する必要がある場合は、代わりにフィルターまたはタグを作成することをお勧めします。参考までに、チェックアウト http://docs.djangoproject.com/en/1.2/howto/custom-template-tags/