【问题标题】:Django: avoiding multiple evaluations of the same expression in a template?Django:避免在模板中对同一表达式进行多次评估?
【发布时间】:2011-01-13 16:54:40
【问题描述】:

当传递一个名为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 模板语言中是否存在这样的构造?

【问题讨论】:

    标签: python django templates variables


    【解决方案1】:

    【讨论】:

      【解决方案2】:
      {% with work_result=widget.work %}
      

      查看 Django docs 了解更多信息

      【讨论】:

      • 但是这个语法对于当前的开发版本应该是正确的,
      猜你喜欢
      • 2019-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多