Djangoのhumanizeフィルターを使ってWebサイトをより人間味のある表示にする方法
この記事では、Djangoのhumanizeフィルターとは何か、そしてDjangoプロジェクトでどのように使うのかを解説します。humanizeは、プロジェクトに「人間らしい温かみ」を加えるためのテンプレートフィルターで、Djangoが標準で提供している便利な機能のひとつです。
humanizeを使うと、数値を単語(英単語)に変換したり、数字にカンマ区切りを追加したり、大きな数値を「million(百万)」や「billion(十億)」といった読みやすい単位に変換したりできます。それでは、実際の例を見ながら使い方を理解していきましょう。
実装例
まず、Djangoプロジェクトとアプリを作成します。
1. プロジェクトのURL設定
プロジェクトのurls.pyを以下のように設定します。
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('',include("humanizeproj.urls")),
path('admin/', admin.site.urls),
]ここでは、アプリ用のURLをインクルードする設定を行っています。
2. アプリ側のURL設定
アプリのurls.pyに以下を追加します。
from django.urls import path,include
from . import views
urlpatterns = [
path('', views.home, name="home")
]アプリのURLで、ビューへのルーティングを定義しています。
3. テンプレートフォルダの作成と設定
次にtemplatesフォルダを作成し、settings.pyでその場所を指定します。
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'humanizeproj/templates')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]これにより、テンプレートフォルダへのパスが明示され、テンプレートファイルへ簡単にアクセスできるようになります。
また、templatesフォルダ内に空のhome.htmlを作成しておいてください。中身はまだ何も書かなくて構いません。
4. INSTALLED_APPSへの追加
settings.pyのINSTALLED_APPSに、自作アプリとdjango.contrib.humanizeを追加します。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 以下の2つを追加
"humanizeproj", # アプリ名
"django.contrib.humanize"
]ここで、自作アプリとhumanizeモジュールを有効化しています。django.contrib.humanizeを登録しないとフィルターが使えないので、忘れずに追加しましょう。
5. ビューの作成
views.pyに以下のコードを記述します。
from django.shortcuts import render
# Create your views here.
def home(request):
return render(request,"home.html")ここではフロントエンドとなるhome.htmlをレンダリングしています。
6. テンプレートでのhumanizeフィルターの使用
home.htmlに以下を記述します。
<!DOCTYPE html>
<html>
<head>
<title>Tut</title>
</head>
<body>
{% load humanize %}
<h1>Numbers(apnumber function) :</h1>
{{"1" | apnumber}}<br>
{{"2" | apnumber}}<br>
{{"10" | apnumber}}<br>
<h1>integer comma:</h1>
{{"1000" | intcomma}}<br>
{{"200000" | intcomma}}<br>
{{"10000000" | intcomma}}<br>
<h1>integer word:</h1>
{{"1000000000" | intword}}<br>
{{"20000000000" | intword}}<br>
{{"10000000" | intword}}<br>
</body>
</html>テンプレートの冒頭で{% load humanize %}を読み込むことが重要なポイントです。各フィルターの役割は以下の通りです。
- apnumber: 数値を単語形式に変換します。例:「2」→「two」。1〜9は単語に、10以上は数字のまま表示されます。
- intcomma: 数値にカンマ区切りを追加します。例:「10000000」→「10,000,000」。
- intword: 大きな整数をmillionやbillionなどの単位表記に変換します。例:「1000000000」→「1.0 billion」。
出力結果
サーバーを起動してブラウザでアクセスすると、各フィルターによって変換された数値が表示されます。


このように、humanizeフィルターを使えばわずかなコードで数値の表示を格段に読みやすくできます。統計データや金額などを表示するWebサイトでは特に効果的なので、ぜひ活用してみてください。
-
Windows 10でPowerShellを使ってIPアドレスやWebサイトをブロックする方法
PowerShellには、Windowsファイアウォールを構成できるNetSecurityモジュールが標準で搭載されています。このモジュールに含まれるNew-NetFirewallRule関数を使用すると、PowerShellからIPアドレスやWebサイトへのアクセスをブロックできます。この機能では、新しい受信(インバウンド)または送信(アウトバウンド)のファイアウォールルールを作成し、対象のコンピューターに追加することが可能です。PowerShellでIPアドレスやWebサイトをブロックするIPアドレス範囲のブロックは確実に機能しますが、Webサイトやドメイン単位でのブロックは少し厄介です。
-
【SolarWinds】Website Performance Monitor(WPM)でWebサイトを常時監視する方法
Webサイトの常時監視がなぜ重要なのかインターネットとコンピューターが普及した現代において、Webサイトの存在は企業にとって不可欠なものとなっています。オンラインでサービスを提供していない場合でも、インターネット上に存在感を持つことは、マーケティングやユーザーへの認知拡大など、多くの場面で大きなメリットをもたらします。洗練されたデザインと高速な動作を実現したWebサイトは、競合他社に対する優位性となり、より多くのユーザーを引き付け、売上と需要の両面でビジネスを大きく後押ししてくれるでしょう。しかし、インターネットが混雑するにつれ、トラフィックの増加によってWebサイトの監視は難しくなりがちです