Djangoで数値のカンマ区切りを実装させる
在庫とかお金とか扱うウェブアプリだとカンマ区切りは必須。
JSに任せてもいいけど、結局正規表現になる上にユーザーに負担を強いるのはどうかと。
ということでDjango側でカンマ区切りを簡単に実装させる。
settings.pyの追記
INSTALLED_APPSに以下を追加。
'django.contrib.humanize',
下記をINSTALLED_APPSの上に追加。これで3桁区切りになる。
NUMBER_GROUPING = 3
3桁区切りで表示させたいテンプレートの追記
htmlの冒頭に下記を追加する。
{% load humanize %}
順番は静的ファイルの読み込みをする{% load static %}
の次で良い。
続いて、カンマ区切りにしたい変数に下記フィルタを追加する。
{{ content.price|intcomma }}
{{ content.price }}
は価格を表示する変数。それにintcomma
フィルタを追加してsettings.py
で指定した通りに分割してカンマ区切りにする。
結論
django.contrib.humanizeは他にもページを見やすくするフィルタが用意されている。
例えば、Twitterで表示される何分前であったかを表示する、naturaltime
と何日前かを表示するnaturalday
。
お金関係の処理でよく見る10百万円等の表示は、intword
で表示できる。
詳しくは公式ドキュメントを参考に