Django: カスタム管理画面の作成

Django 4 の運用(デプロイ・管理編)

日付:2025年2月18日

Django の管理画面を独自のデザインや機能にカスタマイズし、オリジナルのダッシュボードを作成する方法を解説します。

目 次

はじめに

Django の標準管理画面(Admin)は非常に強力ですが、 デザインや操作性をカスタムすることで、より直感的で使いやすい管理画面を作成 できます。
本記事では、Django の管理画面を カスタムダッシュボード に変更する方法を詳しく解説します。

1. カスタム管理画面を作成する理由

デフォルトの Django 管理画面には次のような制約があります。

  • UI がシンプルすぎる → 企業向け管理画面では物足りない
  • 情報の一覧性が低い → ダッシュボード形式で直感的に表示したい
  • カスタム機能の追加が難しい → ユーザー別のデータ表示や、カスタムボタンを追加したい

カスタム管理画面を作成することで:

  • 見やすいダッシュボード を提供できる
  • ユーザーごとの権限に応じた情報 を表示できる
  • 管理画面の操作性を向上 させる

2. Django の管理画面をカスタマイズする方法

カスタム管理画面を作成する方法は、大きく分けて 2 つあります。

方法説明
admin.ModelAdmin を拡張Django の標準管理画面をカスタマイズする方法
独自の管理画面を作成Django Admin を使わず、独自の UI で管理画面を構築

今回は、 Django Admin のテンプレートをオーバーライド する方法と、 完全独自の管理画面を作成 する方法の両方を解説します。

3. Django Admin のテンプレートをオーバーライドする

まずは、 Django 標準の管理画面のデザインを変更 する方法を見ていきましょう。

(1) テンプレートのオーバーライド

Django の管理画面のテンプレートは django/contrib/admin/templates/admin/ にあります。
これらのファイルを プロジェクトの templates/admin/ にコピー すると、カスタマイズが可能になります。

BASH
mkdir -p templates/admin cp -r $(python -c "import django; print(django.__path__[0])")/contrib/admin/templates/admin templates/

この中の base_site.html を編集すると、 管理画面の見た目を変更 できます。

HTML
<!-- templates/admin/base_site.html --> {% extends "admin/base.html" %} {% block title %}カスタム管理画面{% endblock %} {% block branding %} <h1>カスタム管理画面</h1> {% endblock %} {% block nav-global %}カスタムナビゲーション{% endblock %}

ポイント:

  • base_site.html をカスタムすると、ヘッダーやタイトルを変更可能
  • block brandingロゴやカスタムタイトルを設定
  • block nav-global独自のナビゲーションメニューを追加

4. 完全独自の管理画面を作成する

標準の Django Admin を使わずに、独自の管理画面 を構築する方法もあります。

(1) 新しい管理ページを作成

Django のビューとして、新しい管理画面用のページを作成します。

PYTHON
from django.contrib.auth.decorators import login_required from django.shortcuts import render @login_required def custom_admin_dashboard(request): return render(request, 'admin_dashboard.html', { 'user_count': User.objects.count(), 'post_count': Post.objects.count(), })

(2) URL を登録

urls.py に新しい管理ページのルートを追加します。

PYTHON
from django.urls import path from .views import custom_admin_dashboard urlpatterns = [ path('custom-admin/', custom_admin_dashboard, name='custom_admin_dashboard'), ]

(3) カスタムダッシュボードのテンプレートを作成

HTML
<!-- templates/admin_dashboard.html --> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title>カスタム管理ダッシュボード</title> </head> <body> <h1>管理ダッシュボード</h1> <p>登録ユーザー数: {{ user_count }}</p> <p>投稿数: {{ post_count }}</p> </body> </html>

ポイント:

  • login_required を使い、管理者のみがアクセス可能に する。
  • User.objects.count() などで 統計情報を表示
  • Django Admin とは別の 完全カスタムな管理画面を作成

5. まとめ

  • Django の管理画面は テンプレートのオーバーライド でデザイン変更が可能。
  • base_site.html をカスタマイズすると 標準管理画面のデザイン変更ができる
  • custom_admin_dashboard を作成すれば、 独自の管理ダッシュボードが構築できる
  • シンプルな管理機能 なら Django Admin を拡張し、 完全独自の UI が必要なら新しいビューを作成 する。