我在模板中以简单的循环方式编写问题。这就是我想用伪代码编写的内容。
total = 0;
for each dividend
total += dividend.amount;
echo total;
endfor
但我无法找到,如何在django模板文件中编写+ = line。我明白可能我应该在views.py中这样做,但不知怎的,我在模板中这样做。这是我在detail.html中的代码:
{% with totalDividend=0.0 %}
{% for dividend in stock.dividend_set.all %}
[ {{ dividend.date|date:"U000" }} , {{ totalDividend|add:dividend.amount }} ],
{% endfor %}
{% endwith %}
但是totalDividend | add:dividend.amount不起作用,有零。如何在模板文件中添加添加这个简单的循环?无论如何,我正在为dividend.ate做周期。
答案 0 :(得分:0)
您可以编写模板标记来设置上下文值:
from django.template.base import Library
register = Library()
@register.simple_tag(takes_context=True)
def set_by(context, k, v):
context[k] = v
return v
{# template #}
{% with totalDividend=0.0 %}
{% for dividend in stock.dividend_set.all %}
[ {{ dividend.date|date:"U000" }} ,
{% set_by 'totalDividend' totalDividend|add:dividend.amount %} ],
{% endfor %}
{% endwith %}
# OR
@register.assignment_tag(takes_context=True)
def setBy(context, k, v):
context[k] = v
return v
{% with totalDividend=0.0 %}
{% for dividend in stock.dividend_set.all %}
[ {{ dividend.date|date:"U000" }} ,
{% set_by 'totalDividend' totalDividend|add:dividend.amount as totalDividend %}{{ totalDividend }} ],
{% endfor %}
{% endwith %}