humanize
基本情報 [必須]
| 項目 | 内容 |
|---|---|
| モジュールパス | contrib/humanize |
| 種別 | テンプレートタグライブラリ |
| ファイル数 | 2(直下) |
| サブモジュール数 | 1(templatetags) |
概要 [必須]
Django テンプレートで数値・日時などのデータを人間にとって読みやすい形式に変換するテンプレートフィルタ群を提供するモジュールである。{% load humanize %} で使用可能になり、数値のカンマ区切り(intcomma)、序数表現(ordinal)、相対日時表示(naturaltime)など、表示層での読みやすさを向上させるフィルタを提供する。パッケージ初期化ファイルは空であり、実際のフィルタ実装は templatetags/humanize.py に集約されている。AppConfig は最小限の設定のみを持つ。
設計パターン [必須]
| パターン名 | 適用範囲 | 説明 |
|---|---|---|
| Library / Registry | templatetags/humanize.py | Django テンプレートタグライブラリに各フィルタを @register.filter で登録 |
アーキテクチャ [必須]
モジュール構成
humanize/
├── templatetags/ - テンプレートフィルタ実装
│ ├── __init__.py - パッケージマーカー
│ └── humanize.py - フィルタ関数群
├── __init__.py - パッケージマーカー(空)
└── apps.py - HumanizeConfig
コンポーネント関連図
Mermaid形式:
graph LR
Apps[INSTALLED_APPS] --> Config[HumanizeConfig<br/>apps.py]
Template[テンプレート] -->|load humanize| Tags[templatetags/humanize.py<br/>フィルタ群]
Tags --> Output[フォーマット済み出力]
機能一覧 [必須]
| 機能名 | 説明 | 主要ファイル |
|---|---|---|
| アプリケーション設定 | humanize アプリの AppConfig | apps.py |
| テンプレートフィルタ | 数値・日時の人間可読フォーマット | templatetags/humanize.py |
公開インターフェース [必須]
クラス / 関数
| 名前 | 種別 | 用途 |
|---|---|---|
| HumanizeConfig | class | INSTALLED_APPS に指定する AppConfig |
テンプレートフィルタ(intcomma, intword, naturaltime, ordinal 等)は templatetags/humanize.py で定義されており、{% load humanize %} でテンプレート内から使用する。
依存関係 [必須]
外部依存(このモジュールが依存する外部パッケージ)
外部パッケージへの直接依存は該当なし。
外部依存(このモジュールが依存する内部モジュール)
| 依存先モジュール | 主要クラス | 用途 |
|---|---|---|
| django/apps | AppConfig | アプリケーション設定の基底クラス |
| django/utils/translation | gettext_lazy | 国際化 |
内部依存(このモジュールに依存するもの)[最重要]
外部モジュールからの直接的なコード依存は検出されませんでした。ユーザーのテンプレートから {% load humanize %} で使用される。
データフロー [必須]
Mermaid形式:
flowchart LR
Input[テンプレート変数] -->|フィルタ適用| Filter[humanize フィルタ]
Filter --> Output[フォーマット済み文字列]
セキュリティ考慮 [必須]
| 観点 | 対策状況 | 詳細 |
|---|---|---|
| 入力検証 | なし | テンプレートフィルタは入力値をフォーマットするのみ |
| 認証/認可 | なし | テンプレート表示のみ |
| 機密データ | なし | 該当なし |
技術的負債・既知の問題 [必須]
特に問題は検出されませんでした。
拡張ポイント [必須]
| 変更内容 | 修正対象ファイル | 手順・注意点 |
|---|---|---|
| 新しいフィルタ追加 | templatetags/humanize.py | @register.filter で関数を登録。国際化対応が必要な場合は gettext を使用 |
注意点・特記事項 [必須]
- 設計上の制約:
INSTALLED_APPSに"django.contrib.humanize"を追加しないとテンプレートタグが使用できない - パフォーマンス: 該当なし
- 互換性: 該当なし
配下ドキュメント [必須]
サブモジュール
- templatetags.md - テンプレートフィルタ実装
ファイル
- init.py.md - パッケージマーカー(空)
- apps.py.md - HumanizeConfig AppConfig