【问题标题】:django for cycle add variables togetherdjango for循环将变量添加在一起
【发布时间】:2013-04-18 15:59:39
【问题描述】:

我在模板中用简单的 for 循环编写时遇到问题。这就是我试图用伪代码编写的。

total = 0;
for each dividend
  total += dividend.amount;
  echo total;
endfor

但我不知道如何在 django 模板文件中编写 += 行。我知道可能我应该在views.py 中执行此操作,但不知何故我在模板中执行此操作。这是我的详细代码.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 不起作用,有零。如何在模板文件中添加这个简单的循环?无论如何,我正在为股息.date 循环。

【问题讨论】:

    标签: django templates for-loop addition


    【解决方案1】:

    您可以编写模板标签来设置上下文值:

    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 %}
    

    【讨论】:

    • 感谢回复,我会在一个小时后测试它。我已经阅读过标签,但我认为这种微不足道的事情可以直接在模板文件中完成。我真的很震惊它不是。再次感谢。
    • 你的两个版本我都试过了,但还是不行。这是我的 detail.html 文件 [链接] (pastebin.com/xUQ7aTXy),这是我的输出。 [链接] (46.28.109.22:8800/stocks/B)。价格(橙色线)是我要添加金额的地方。为零(js 源)。
    • 嗯,它可以工作,只是不能处理浮点数。 stackoverflow.com/questions/2237607/…
    • @Lucas03 我明白了 =) 是的,你需要另一个添加标签。
    猜你喜欢
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多