2010-12-31 4 views
1

이것은 이전에 거의 확실하게 여기에서 물어 보았습니다. 중복 된 경우 사과드립니다. 그래도 대답을 찾을 수 없습니다 :)장고 :보기 또는 템플릿에서 더 효율적으로 계산할 수 있습니까?

Django에서 일반적으로보기 또는 템플릿에서 계산을하는 것이 더 효율적입니까?

다음은 간단한 예입니다. 정수 값에 따라 특정 문자열을 템플릿에 넣고 싶습니다.

# in views.py 
description = "small" 
if count > 10: 
    description = "large" 
elif count > 5: 
    description = "medium" 

아니면 템플릿에이 방법을 할 수있는 : 나는 views.py에서 그것을 할 수이 경우

# in template.html 
{{ count }} 
({% if count > 10 %}large 
{% else %} 
{% if count > 5 %}medium{% else %}small{% endif %} 
{% endif %}) 

, 코드 뷰에서 눈에 띄게 간단하다, 그래서 아마도 그건 내 질문에 대한 대답 그러나 실제로 알고 싶은 것은 그것이 템플릿이나 뷰에서 효율성을 높이는 것입니까?

답변

2

효율적으로 무엇을 의미 하느냐에 달려 있습니다.

이전 버전에서는 논리가 템플릿에 포함되어 있기 때문에 먼저 문자열을 노드로 구문 분석하고 토큰 화해야 실행되기 때문에 함수 호출 수가 적습니다.

그러나 두 가지 모두 매우 간단하기 때문에 실제 환경에서 두 성능 모두 동일합니다.

효율성의 광범위한 해석에는 코드의 유지 관리 가능성이 포함되며 일반적으로보기 (또는 해당되는 경우 모델)에 포함되어 있으면 일반적으로 더 읽기 쉽고 리팩터링하기 쉽습니다.

해석상 가능한 한 많은 논리를 템플릿에서보기, 컨트롤러 또는 templatetags로 이동하는 것이 가장 좋습니다.

2

나는 이것이 효율성의 문제라고 말하지 않을 것이지만, 코드가 MVC like pattern을 사용하는 곳이 더 많다. 이게 전부라면 약 을 표시하는 것이 아니라 무엇 템플릿이 적합한 장소인지 확인하십시오. 을 수정하면이 표시됩니다.보기가 더 적합한 장소입니다!

이 값이 모델과 밀접하게 관련되어 있다면 템플릿에서 호출하는 모델에 대한 메서드를 만들 수도 있습니다. 다른 장소에서 동일한 기능이 필요한 경우이 목적으로 custom template tag을 작성하는 것이 좋습니다.

그러나 django isn't so strict about dealing with the original MVC pattern 및 예를 들어 templatetags는 템플릿 내부에서 많은 기능을 사용합니다!

관련 문제