我正在 django 模板中使用 forloop 填充表
<tbody>
{% with total=0 %}
{% for inv in row.investmentdetails_set.all %}
<tr>
<th>{{ inv.investment_type }}</th>
<td class="text-center">{{ inv.enterprise }}</td>
<td class="text-center">{{ inv.investment }}</td>
<td class="text-center">{{ inv.investment_date|date:'Y-m-d' }}</td>
<td class="text-center">{{ inv.maturity_date|date:'Y-m-d' }}</td>
<td class="text-center">{{ inv.monthly_returns }}</td>
<td class="text-center">{{ inv.maturity_status }}</td>
</tr>
{% with total=total|add:inv.monthly_returns %}{% endwith %}
{% endfor %}
<tr>
<td colspan="7">{{total}}</td>
</tr>
{% endwith %}
</tbody>
总打印 0
我尝试了内部之间的{{total}},每次都打印“2000” 而不是打印 2000 4000 6000
我正在 django 模板中使用 forloop 填充表
<tbody>
{% with total=0 %}
{% for inv in row.investmentdetails_set.all %}
<tr>
<th>{{ inv.investment_type }}</th>
<td class="text-center">{{ inv.enterprise }}</td>
<td class="text-center">{{ inv.investment }}</td>
<td class="text-center">{{ inv.investment_date|date:'Y-m-d' }}</td>
<td class="text-center">{{ inv.maturity_date|date:'Y-m-d' }}</td>
<td class="text-center">{{ inv.monthly_returns }}</td>
<td class="text-center">{{ inv.maturity_status }}</td>
</tr>
{% with total=total|add:inv.monthly_returns %}{% endwith %}
{% endfor %}
<tr>
<td colspan="7">{{total}}</td>
</tr>
{% endwith %}
</tbody>
总打印 0
我尝试了内部之间的{{total}},每次都打印“2000” 而不是打印 2000 4000 6000
一个简单的 cli 示例,以便更好地理解(多行):
>>> from jinja2.nativetypes import NativeEnvironment
>>> env = NativeEnvironment()
>>> t = env.from_string(
... '{% for i in range(5) %}'
... '{{ total+i }}'
... '{% endfor %}'
... '{{ "**" + total|string }}'
... )
>>> t.render(total=0)
输出:
'01234**0'
与 with 相同的示例 ^^
>>> t = env.from_string('{% for i in range(5) %}{% with total=total+i %}{% endwith %}{% endfor %}{{ "**" + total|string }}')
>>> t.render(total=0)
输出:
'**0'
https://docs.djangoproject.com/en/5.0/ref/templates/builtins/#with
仅在 {% with %} 和 {% endwith %} 标签之间可用