使用块标记内的变量执行某些操作

时间:2012-05-15 16:53:45

标签: django django-templates

假设我使用..

在模板中传递变量“subtotal”

在我的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 }}

它给了我

无效的块标记:'小计',预期'空'或'结束'

我们不能在django模板系统中嵌套块标签吗?

如果是,怎么样?

必须有,至于我计算小计,我必须计算我的小计,我必须在两个地方运行相同的循环,这使得它非常无效!

//鼠标。

2 个答案:

答案 0 :(得分:1)

您可以拥有嵌套代码:

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

要添加内容,您需要add模板过滤器。

{{ player.score|add:subtotal }}

但是,您的问题需要在视图中解决。因为即使使用custom tags,您也无法可靠地跟踪模板中单个变量的运行总计。

请参阅this answer了解可以帮助您入门的实现,但请注意他们正在讨论汇总列表。

这种逻辑应该在视图中完成。

答案 1 :(得分:0)

我真的建议您保留逻辑分离和信息显示。 Django模板系统专门设计用于通过逻辑和计算来模拟你的模板,从而最大限度地减少你射击自己的能力。

在视图中执行计算和逻辑操作,并将完成的产品传递给模板。模板语言可以通过尝试强制执行这种责任分离来帮助您维护代码的可重用性和“可调试性”。

相关问题