0

我想要实现的是在 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 %}

使用自定义划分过滤器看起来像

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

我对如何安排它、我应该使用的过滤器和参数的顺序有点困惑。对于此处显示的示例,它会导致错误:Caught ValueError while rendering: could not convert string to float:

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

4

1 回答 1

0

不要那样做。Django 模板系统不是放置这种逻辑的地方。阅读Django 官网关于模板的哲学评论:

如果您有编程背景,或者如果您习惯于将编程代码直接混合到 HTML 中的语言,那么您需要记住 Django 模板系统不仅仅是将 Python 嵌入到 HTML 中。这是设计使然:模板系统旨在表达表示,而不是程序逻辑。

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

于 2013-06-22T17:51:43.033 回答