0

..を使用して、テンプレート内で変数「小計」を渡しているとしましょう。

私のviews.pyで

subtotal = 0
page_vars = Context({
    'players': players,
    'subtotal': subtotal,
})

私のhtmlで。

{% for player in players %}
{% subtotal += player.score %}

{{ player.name }} <td />
{{ player.score }} <td />

{% endfor %}
{{ subtotal }}

それは私に与えます

無効なブロック タグ: 'subtotal'、予期される 'empty' または 'endfor'

django テンプレート システムでブロック タグをネストすることはできませんか?

はいの場合、どのように?

小計を計算するには、小計を計算する必要があります。2 つの場所で同じ for ループを実行する必要があるため、非常に非効率的です。

//ねずみ。

4

2 に答える 2

1

ネストされたタグを持つことができます:

{% for foo in bar %}
   {% for zoo in foo %}
   {% endfor %}
{% endfor %}

何かを追加するには、addテンプレート フィルターが必要です。

{{ player.score|add:subtotal }}

ただし、問題はビューで解決する必要があります。カスタムタグを使用しても、テンプレート内の単一変数の現在の合計を確実に追跡することはできません。

開始するための実装については、この回答を参照してください。ただし、リストの合計について話していることに注意してください。

この種のロジックは、ビューで実行する必要があります。

于 2012-05-15T17:02:55.393 に答える
0

ロジックと情報の表示を分離しておくことを強くお勧めします。Django のテンプレート システムは、ロジックと計算を使ってテンプレートを組み立てることで、自分自身を撃つ能力を最小限に抑えるように意図的に設計されています。

ビューで計算と論理操作を実行し、完成品をテンプレートに渡します。テンプレート言語は、この責任の分離を強制することにより、コードの再利用性と「デバッグ可能性」を維持するのに役立ちます。

于 2012-05-15T19:11:13.240 に答える