在 {% with %} 中添加 Django 模板不起作用

问题描述 投票:0回答:1

我正在 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

python django django-templates
1个回答
0
投票

一个简单的 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 %} 标签之间可用

© www.soinside.com 2019 - 2024. All rights reserved.