Django:避免在模板中对同一个表达式进行多次评估?

时间:2011-01-13 16:54:41

标签: python django templates variables

当传递一个名为widget的对象作为上下文的一部分来渲染django模板时,我可能有一个方法有点贵,但我想多次显示它的结果。

的Python:

class Widget:
   def work(self):
      # Do something expensive

模板

This is a widget, the result of whose work is {{widget.work}}.  Do
you want to save {{widget.work}} or discard {{widget.work}}?

显然,我可以通过在视图代码中对方法进行一次评估然后传递结果来解决这个问题,但这似乎过多地结合了视图和模板。模板作者是否有办法隐藏值以便稍后在模板中重用?我想做这样的事情:

{% work_result = widget.work %}
This is a widget, the result of whose
work is {{work_result}}.  Do you want to save {{work_result}} or discard {{work_result}}?

这种构造是否存在于django模板语言中?

2 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

{% with work_result=widget.work %}

查看Django docs以获取更多信息