Python
 Computer >> コンピューター >  >> プログラミング >> Python

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」。

出力結果

サーバーを起動してブラウザでアクセスすると、各フィルターによって変換された数値が表示されます。

Djangoのhumanizeフィルターを使ってWebサイトをより人間味のある表示にする方法Djangoのhumanizeフィルターを使ってWebサイトをより人間味のある表示にする方法

このように、humanizeフィルターを使えばわずかなコードで数値の表示を格段に読みやすくできます。統計データや金額などを表示するWebサイトでは特に効果的なので、ぜひ活用してみてください。

  1. Windows 10でPowerShellを使ってIPアドレスやWebサイトをブロックする方法

    PowerShellには、Windowsファイアウォールを構成できるNetSecurityモジュールが標準で搭載されています。このモジュールに含まれるNew-NetFirewallRule関数を使用すると、PowerShellからIPアドレスやWebサイトへのアクセスをブロックできます。この機能では、新しい受信(インバウンド)または送信(アウトバウンド)のファイアウォールルールを作成し、対象のコンピューターに追加することが可能です。PowerShellでIPアドレスやWebサイトをブロックするIPアドレス範囲のブロックは確実に機能しますが、Webサイトやドメイン単位でのブロックは少し厄介です。

  2. 【SolarWinds】Website Performance Monitor(WPM)でWebサイトを常時監視する方法

    Webサイトの常時監視がなぜ重要なのかインターネットとコンピューターが普及した現代において、Webサイトの存在は企業にとって不可欠なものとなっています。オンラインでサービスを提供していない場合でも、インターネット上に存在感を持つことは、マーケティングやユーザーへの認知拡大など、多くの場面で大きなメリットをもたらします。洗練されたデザインと高速な動作を実現したWebサイトは、競合他社に対する優位性となり、より多くのユーザーを引き付け、売上と需要の両面でビジネスを大きく後押ししてくれるでしょう。しかし、インターネットが混雑するにつれ、トラフィックの増加によってWebサイトの監視は難しくなりがちです