Django:在视图或模板中计算更高效?

Django:在视图或模板中计算更高效?,django,django-templates,django-views,Django,Django Templates,Django Views,这几乎肯定是以前在这里问过的,所以如果是重复的,我道歉。但我找不到答案:) 通常,在Django中,在视图中还是在模板中进行计算更有效 这里有一个简单的例子。我想在模板中放入一个特定的字符串,具体取决于整数的值。我可以在视图.py中执行此操作: # in views.py description = "small" if count > 10: description = "large" elif count > 5: description = "medium"

这几乎肯定是以前在这里问过的,所以如果是重复的,我道歉。但我找不到答案:)

通常,在Django中,在视图中还是在模板中进行计算更有效

这里有一个简单的例子。我想在模板中放入一个特定的字符串,具体取决于整数的值。我可以在
视图.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 %})

在这种情况下,代码在视图中明显更简单,因此这可能回答了我的问题:但我真正想知道的是,在模板或视图中执行此操作是否会对效率产生影响?

我不会说这是一个效率问题,但更重要的是,代码适合使用。如果这一切都是关于如何显示一些东西,而不是模板是一个合适的地方。如果您要修改显示内容,则视图是更合适的位置

如果您认为这些值与模型有着紧密的联系,那么您还可以在模型上创建一个方法,从模板中调用该方法。如果您在其他地方需要相同的功能,也可以为此目的创建一个新的应用程序


但是要考虑到这一点,例如templatetags在模板中提供了很多功能

我不会说这是一个效率问题,但更多的问题是代码在哪里适合使用。如果这一切都是关于如何显示一些东西,而不是模板是一个合适的地方。如果您要修改显示内容,则视图是更合适的位置

如果您认为这些值与模型有着紧密的联系,那么您还可以在模型上创建一个方法,从模板中调用该方法。如果您在其他地方需要相同的功能,也可以为此目的创建一个新的应用程序


但是要考虑到这一点,例如templatetags在模板中提供了很多功能

这取决于你所说的高效

前一个版本涉及更少的函数调用,因为当模板中包含逻辑时,必须首先将字符串解析为节点并标记,然后才能执行

但是,这两种方法的性能在现实环境中是相同的,因为它们都非常简单

更广泛的效率解释包括代码的可维护性,当包含在视图(或模型,如果合适的话)中时,代码通常更可读,更容易重构


在这两种解释中,最好将尽可能多的逻辑移出模板,移入视图、控制器或模板标签。

这取决于您所说的高效

前一个版本涉及更少的函数调用,因为当模板中包含逻辑时,必须首先将字符串解析为节点并标记,然后才能执行

但是,这两种方法的性能在现实环境中是相同的,因为它们都非常简单

更广泛的效率解释包括代码的可维护性,当包含在视图(或模型,如果合适的话)中时,代码通常更可读,更容易重构

在这两种解释中,最好将尽可能多的逻辑移出模板,移入视图、控制器或模板标记中