Djangoのテンプレートは便利ですよね。
テンプレート内にあらゆる数値や文字列を代入して加工したり編集したりと応用が色々と効きます。
本日はそんなDjangoのテンプレートで、四則演算の計算(加算・減算・乗算・除算)を行う方法を紹介します。
コンテンツ
四則演算でもできるものとできないものがある
いきなり紹介記事を書いておきながら、否定で入りますが実はDjangoのテンプレートの四則演算の計算の中にはできないものがあります。
djangoのテンプレートで、可能・不可能な四則演算一覧です。
足し算(加算) | 可能 |
引き算(減算) | 可能 |
掛け算(乗算) | 不可能 |
割り算(除算) | 不可能 |
掛け算と割り算はdjangoのテンプレートではできません。
しかしあきらめるには早いです。
その方法を紹介していきます。
その前にまずは基本的な、足し算と引き算を紹介します。
足し算(加算)
Djangoのテンプレート内で、足し算(加算)を行うには「add」フィルターを使用します。
1 |
{{ value|add: "数値"}} |
valueがサーバー(views)側で用意した値です。
実際に数値を入れると以下の感じです。
1 |
{{ value|add:"10" }} |
ちなみにですが、「|add:”10″」というこの一連のコードですがスペースを入れるとエラーが発生するので切り詰めて書くようにする必要があります。
引き算(減算)
Djangoのテンプレート内で、引き算(減算)を行うには「add」フィルターを使用します。
足し算(加算)と同じaddフィルターですがマイナスを入れることでこの問題は解消されます。
1 |
{{ value|add:"-10" }} |
こんな感じです。
掛け算(乗算)
先の説明で、掛け算(乗算)と割り算(除算)はフィルターが用意されていないと書きましたが、組み込みテンプレートタグを利用して、直接自作する必要があります。
自作の組み込みテンプレートタグの作り方に関しては以前の記事で紹介しています。
以上を加味した上で作成する掛け算のコードを作成します。
custom_tag.py
1 2 3 4 5 6 7 8 |
from django import template # Djangoテンプレートタグライブラリ register = template.Library() def multiplication(value_a, value_b): """掛け算""" calculation_result = value_a * value_b return calculation_result |
html側には以下のように書きます。
sample.html
1 |
<p>結果は、{{ multiplication value_a value_b}} です。</p> |
これだけです。
あとは小数点は切り捨てたいとか、四捨五入したいとかはpythonの基礎の基礎なので自分で調べて書いてみてください。
割り算(除算)
今回は、2つの値を用意して、割り算を実行して小数点を切り捨てして返すコードになります。
正直中身はなんでもいいですし、自分のやりたいことができれば良いです。
四則演算もpythonの基礎の基礎なので少しでもpythonをかじっていれば直ぐに作成できます。
custom_tag.py
1 2 3 4 5 6 7 8 9 10 11 12 |
import math from django import template # Djangoテンプレートタグライブラリ register = template.Library() @register.simple_tag def division(value_a, value_b): """割り算 -> 小数点切り捨てして返す""" calculation_result = value_a / value_b calculation_result = math.floor(calculation_result*100) # 小数点第1位消す return calculation_result |
html側には以下のように書きます。
sample.html
1 |
<p>結果は、{{ division value_a value_b}} %です。</p> |
これでやりたいことが実現できました。
以上。
参考
最後に
いかがでしたでしょうか。
以上が、「Djangoのテンプレートで四則演算の計算(加算・減算・乗算・除算)を行う方法」になります。
プログラミング学習を効率良く進めるには…
私ヒロヤンがプログラミングを始めた頃は以下のような感じでした。
そしてネットで調べていくうちに膨大な時間が過ぎていきました。
私ヒロヤンの実体験より、プログラミングを効率的に学ぶために大切なことは以下のことだと考えています。
1. いつまでもダラダラとやらないで、目標を決定して短期集中する
2. マンツーマンで、わからない箇所は直ぐに質問をして即レスをもらう
.proでは私ヒロヤンが学習してきたプログラミング経験0からのpython/django、その他webサイト・サービス開発のコースが用意されています。
カウンセリング自体は無料なので話を聞いてみるだけでもいかがでしょうか?
また以下のリンク先ではdjangoを教えてくれるスクールをまとめ紹介しています。
コメントを残す