2016-07-05 2 views
-3

テンプレートで複雑な計算、ジャンゴ - 例えば私の知る限り理解し、テンプレートでDjangoの変数を含む数学を行うための方法はありません

<td>{{variable_1}} + {{variable_2}}</td> 

人々はビューで計算を行うことをお勧めしますが、私をサーバーからクライアントへデータを送信するだけのサーバー側を使用する必要があることが懸念されます。すべての計算は、クライアントコンピュータの電源を使用して行う必要があります。もう1つのオプションは、ページの読み込み後にjavascript、特にjqueryで計算を行っている可能性がありますが、計算が非常に複雑な場合はデータが遅れてレンダリングされるという欠点があります。ここで最もバランスの取れたソルトは何ですか?

+2

VTCが主に意見ベースです。あなたの意見では、これはクライアントサイドおよび/またはテンプレートで発生するはずです。それは結構です。 Djangoの意見では、この意見についての枠組みを構築し、意図的にそれらのテンプレートでの使用を制限した程度ではならないという、かなり強い意見です。副次的なこととして、最初はクライアントサイドであるべきだと言い、後でクライアント側で実行することによって生じるレンダラの心配を後回しにしているように、あなた自身はこれについて矛盾しているようです。 –

+0

ページがロードされた後に計算を行うため、クライアントサイドのレンダリングのレンダリングが気になりません。そうでなければ、テーブルをループする方法はあります –

+5

これは大変です。テンプレートで計算を実行しても、処理能力はクライアントには適用されません。フレームワークの別のポイントに移動するだけですが、まだサーバー側にあります。これは尋ねるための質問のように見えます。そうでない場合は、角度を考慮する。私は、大部分のアプリケーションではテンプレートに非常に多くの計算が重要になることは間違いありません。 – Wtower

答えて

2

django-mathfiltersは、この目的のためだけに一連のテンプレートタグを提供します。インストールすると、テンプレート内でフィルタタグを使用して計算を制限することができます。ドキュメントから:あなたは、さらに機能が必要な場合

{% load mathfilters %} 

<h1>Basic math filters</h1> 

<ul> 
    <li>8 + 3 = {{ 8|add:3 }}</li> 

    <li>13 - 17 = {{ 13|sub:17 }}</li> 

    {% with answer=42 %} 
    <li>42 * 0.5 = {{ answer|mul:0.5 }}</li> 
    {% endwith %} 

    {% with numerator=12 denominator=3 %} 
    <li>12/3 = {{ numerator|div:denominator }}</li> 
    {% endwith %} 

    <li>|-13| = {{ -13|abs }}</li> 
</ul> 

、あなたは簡単に任意の必要な計算を実行するmake your own tagsにできるようになります。

+0

また、@ Wtowerのコメントは重要で基本的な概念です。テンプレートレンダリングはクライアント側の操作ではありません。 –

関連する問題