2010-12-31 3 views
1

これは前にほとんど確実にここで尋ねられているので、重複している場合はお詫び申し上げます。私は答えを見つけることができません:)Django:ビューやテンプレートで計算する方が効率的ですか?

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 %}) 

この場合、コードは、ビューで著しく単純であるので、おそらくそれは私の質問に答えますしかし、私が本当に知りたいのは、それがテンプレートかビューのどちらかで効率化に違いがあるかどうかです。

答えて

2

効率的であれば意味が異なります。

以前のバージョンでは、ロジックがテンプレートに含まれていると、文字列を最初に解析してトークン化してから実行する必要があったため、関数呼び出しが少なくなりました。

しかし、これらの両方のパフォーマンスは、両方とも非常に簡単であるため、実際の状況では同じになります。

効率の幅広い解釈には、コードの保守性が含まれます。これは、一般的には読みやすく、リファクタリングが容易です(適切な場合はモデル)。

いずれの解釈でも、可能な限り多くのロジックをテンプレートからビュー、コントローラ、またはテンプレートタグに移動することが最善です。

2

これは効率の問題だとは言いませんが、コードが適合する場所はMVC like patternです。これがすべての場合約何かを表示するにはとは何ですかテンプレートは適切な場所です。 を変更したら、と表示されているビューは、より適切な場所です!

この値がモデルに拘束されていると言えば、テンプレート内から呼び出すモデルに対してメソッドを作成することもできます。他の場所で同じ機能が必要な場合は、この目的のためにcustom template tagを作ることも意味があります!

しかし、django isn't so strict about dealing with the original MVC pattern、 templatetagsはテンプレートの中で多くの機能を引き出します!

関連する問題