Django模板:使用过滤结果作为第二个过滤器的参数

时间:2013-06-21 19:23:41

标签: python django django-template-filters

我想要实现的是在Django模板中进行计算,简单的数学就是:

section_angle = base_angle + ( sections_length / current_iteration_counter_over_sections)

当试图在Django模板中翻译它时,我认为可能是这样的:

{% for section in sections %}
    {% with base_angle|add:sections|length|divides:forloop.counter0 as section_angle %}

使用自定义 divides 过滤器,如

def divides(value, param):
    return float(param)/float(value)

我对如何安排它,我应该使用的过滤器和参数的顺序感到有点困惑。使用此处显示的示例,它会导致错误:在渲染时捕获ValueError:无法将字符串转换为float:

奖金问题:我试图添加括号来澄清,但模板引擎似乎不喜欢它。

1 个答案:

答案 0 :(得分:0)

不要那样做。 Django模板系统不是放置这种逻辑的地方。 阅读Django官方网站上有关模板的Philosophy comments

  

如果你有编程背景,或者你已经习惯了   将编程代码直接混合到HTML中的语言,你会想要的   要记住,Django模板系统不仅仅是Python   嵌入到HTML中。这是设计:模板系统的意思   表达陈述,而不是程序逻辑。

我认为Timmy的评论是正确的,将整个逻辑放在自定义过滤器中。