之前几乎可以肯定地问过这个问题,如果它是重复的话,请道歉。我找不到答案:)
在Django中,一般来说,在视图或模板中进行计算是否更有效?
这是一个简单的例子。我想在模板中放置一个特定的字符串,具体取决于整数的值。我可以在views.py
:
# in views.py
description = "small"
if count > 10:
description = "large"
elif count > 5:
description = "medium"
或者我可以在模板中这样做:
# in template.html
{{ count }}
({% if count > 10 %}large
{% else %}
{% if count > 5 %}medium{% else %}small{% endif %}
{% endif %})
在这种情况下,代码在视图中明显更简单,所以也许这回答了我的问题:但我真正想知道的是,在模板或视图中执行它会对效率产生影响吗? / p>
答案 0 :(得分:2)
我不会说这是一个效率问题,而是代码使用MVC like pattern所适用的更多问题。如果这完全是关于如何显示某些东西而不是什么模板是一个合适的地方。如果你说你修改了显示的,那么视图就更合适了!
如果您说这些值与模型深深绑定,您还可以在模板中调用的模型上创建方法。如果您在其他地方需要相同的功能,为此目的制作custom template tag也是有意义的。
但请继续考虑django isn't so strict about dealing with the original MVC pattern,例如。 templatetags在模板中提取了很多功能!
答案 1 :(得分:2)
这取决于你的效率。
前一版本涉及较少的函数调用,因为当逻辑包含在模板中时,必须首先将字符串解析为节点并在执行之前进行标记化。
然而,这两者的表现在现实世界中都是相同的,因为它们都非常简单。
对效率的更广泛解释将包括代码的可维护性,当包含在视图(或模型中,适当时)时,代码通常更易读,更容易重构。
在任何一种解释中,最好将尽可能多的逻辑从模板中移出到视图,控制器或模板标签中。