我想要实现的是在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:
奖金问题:我试图添加括号来澄清,但模板引擎似乎不喜欢它。
答案 0 :(得分:0)
不要那样做。 Django模板系统不是放置这种逻辑的地方。 阅读Django官方网站上有关模板的Philosophy comments:
如果你有编程背景,或者你已经习惯了 将编程代码直接混合到HTML中的语言,你会想要的 要记住,Django模板系统不仅仅是Python 嵌入到HTML中。这是设计:模板系统的意思 表达陈述,而不是程序逻辑。
我认为Timmy的评论是正确的,将整个逻辑放在自定义过滤器中。