SIGMA-SE Math & Tech Library

SIGMA-SE Math & Tech Library


数学と情報技術をテーマに、書籍や教材だけではつかみにくい考え方を具体例とともに簡潔にわかりやすく伝える解説サイトです。
技術の歴史や背景、関連知識の整理、学習のための覚書や要約記事も掲載しています。

Django - Django Debug Toolbar:2/2 デバッグ情報とカスタマイズ

概要

Django Debug Toolbarで確認できる代表的な表示パネルと、DEBUG_TOOLBAR_PANELSによるカスタマイズ方法を整理する。

Toolbarの各パネルは、バージョン、処理時間、SQL、テンプレート、キャッシュ、ログなど、画面表示時の内部情報を確認する入口になる。
どのパネルで何を見られるかを知っておくと、原因調査の流れを作りやすい。

掲載画像はDjango 2.0.2を利用していた当時の画面であり、現行版とはパネル名や構成が異なる。
画像は画面の見方をつかむための旧版例として使用し、現行版との差分もあわせて説明する。

この記事の構成

対象環境と利用上の注意

  • 本文記載時の環境
    掲載画像はDjango 2.0.2と当時のDjango Debug Toolbarを利用した旧環境。
    現行版との差分は本文で分けて説明する。
  • 確認時期
    2026年8月にDjango Debug Toolbarの公式資料と照合。
    掲載画像と同じ操作を現行版で再実行していない。
  • 現在そのまま利用できない箇所
    既定パネル、パネル名、表示項目、設定クラスは版によって変わる。
    画像どおりの表示を前提にせず、利用中の版の公式パネル一覧と設定方法を確認する。

作業時の注意点

  • パネルの見方
    全パネルを見るより、調査目的に合わせて見る場所を決める。
  • Timerの解釈
    サーバー処理とブラウザ側の表示時間を混同しない。
  • SQLの多さ
    クエリ数だけでなく、同じSQLが繰り返されていないかを見る。
  • Redirects
    有効化するとリダイレクト動作が変わるため、調査時だけ使う。
  • 公開環境での利用
    設定値やSQLなどの内部情報を表示するため、外部公開された本番環境では有効にしない。

実施内容

表示パネルの概要説明

以下は、掲載画像を取得した旧バージョンで表示されていたパネルについての説明である。
現行版の構成は後述の「現行版での主な違い」で補足する。

  1. Versions
    Python、Django、インストール済みアプリなど、調査対象のバージョン情報を確認。依存ライブラリ固有の不具合を調べるときは、まずここで実行環境を特定する。
    Versionsパネルに表示されたDjangoなどのバージョン情報

  2. Timer(掲載画像では「時刻」)
    リクエスト処理のCPU時間と経過時間を確認。
    掲載画像ではブラウザ側のタイミングも別欄に表示されている。
    Timerパネルに表示されたCPU時間と経過時間

    • Resource usage > User CPU time
      Pythonプロセスがユーザーモードで実際にCPUを使用した時間。
    • Resource usage > System CPU time
      OSカーネルがシステムコールなどの処理にCPUを使用した時間。
    • Resource usage > Total CPU time
      User CPU timeとSystem CPU timeの合計。
    • Resource usage > Elapsed time
      処理開始から終了までに経過した実時間。I/O待ちなども含むため、通常はTotal CPU timeと一致しない。ブラウザの描画時間そのものを表す値ではない。
    • Resource usage > Context switches
      voluntaryはI/O待ちなどで処理が自発的にCPUを譲った回数、involuntaryはOSのスケジューラによって実行が切り替えられた回数。
  3. Settings
    settings.pyの設定値を一覧で確認できる。 Settingsパネルに表示されたDjango設定値の一覧

  4. Headers
    HTTPリクエストヘッダー情報レスポンスヘッダー情報、WSGI環境情報を確認できる。 旧版のHeadersパネルに表示されたリクエスト・レスポンスヘッダーとWSGI環境情報

  5. Request
    ViewやCookie、Sessionなどのリクエスト情報を確認できる。 旧版のRequestパネルに表示されたView、Cookie、Session情報

  6. SQL
    画面が表示されるまでに実行されたSQL文、各クエリの実行時間、類似・重複クエリ、スタックトレースなどを確認できる。 旧版のSQLパネルに表示されたSQL文、実行時間、類似・重複クエリ

  7. Static Files
    画面を表示する際に読み込んだStaticファイルを確認できる。
    Static Filesパネルに表示された使用済み静的ファイル

  8. Templates
    画面を表示する際に使用されたテンプレート、継承関係、コンテキストを確認できる。
    想定外のテンプレートが選ばれた場合や、変数が渡っていない場合の切り分けに使う。
    Templatesパネルに表示されたテンプレートとコンテキスト

  9. Cache
    リクエスト中に行われたキャッシュ操作や処理時間を確認。
    キャッシュが期待どおり使われているか、同じキーへ不要なアクセスがないかを調べる入口になる。
    Cacheパネルに表示されたキャッシュ操作の情報

  10. Signals
    Djangoのシグナルと登録済みレシーバーを一覧で確認。
    意図したレシーバーが登録されているかを調べる際に役立つ。
    Signalsパネルに表示されたシグナルとレシーバーの一覧

  11. Logging
    当時の組み込みLoggingパネルでは、Pythonのloggingモジュールで出力したログを確認できた。
    現行版の組み込みパネル一覧には含まれていないため、現在の環境では通常のログ出力や対応する外部ツールを利用。
    旧版のLoggingパネルに表示されたリクエスト処理中のログ

  12. Intercept redirects
    有効にするとリダイレクト前に中間ページを表示し、その時点のデバッグ情報を確認できる。
    ただし、現行版では非推奨で、リダイレクトされたリクエストの情報はHistoryパネルから確認する方法が推奨されている。

現行版での主な違い

掲載画像の旧版と比べ、現行版の組み込みパネルにはHistory、Alerts、Communityなどが追加されている。
一方、旧版のLoggingパネルは現行版の組み込み一覧には含まれない。

  • History
    過去のリクエストを選び、その時点のToolbar情報を確認。
    リダイレクト前後の調査にも利用できる。
  • Alerts
    ファイル入力を含むフォームでenctype="multipart/form-data"が不足している場合など、既知の問題を通知する。
  • Redirects
    現行版にも含まれるが既定では無効で、バージョン6.0から非推奨となっている。
  • Profiling
    リクエスト処理中の関数呼び出しを確認するパネル。
    現行版では構成に含まれるが既定では無効である。

表示パネルのカスタマイズ

表示するパネルは、settings.pyDEBUG_TOOLBAR_PANELSで変更できる。
現行版の既定値は次の構成で、並び替え削除追加が可能である。
ただし、既定値をそのままコピーすると将来の改善を取り込めなくなるため、変更が必要な場合だけ設定する。

  • DEBUG_TOOLBAR_PANELS = [
        'debug_toolbar.panels.history.HistoryPanel',
        'debug_toolbar.panels.versions.VersionsPanel',
        'debug_toolbar.panels.timer.TimerPanel',
        'debug_toolbar.panels.settings.SettingsPanel',
        'debug_toolbar.panels.headers.HeadersPanel',
        'debug_toolbar.panels.request.RequestPanel',
        'debug_toolbar.panels.sql.SQLPanel',
        'debug_toolbar.panels.staticfiles.StaticFilesPanel',
        'debug_toolbar.panels.templates.TemplatesPanel',
        'debug_toolbar.panels.alerts.AlertsPanel',
        'debug_toolbar.panels.cache.CachePanel',
        'debug_toolbar.panels.signals.SignalsPanel',
        'debug_toolbar.panels.community.CommunityPanel',
        'debug_toolbar.panels.redirects.RedirectsPanel',
        'debug_toolbar.panels.profiling.ProfilingPanel',
    ]
    
  • プロファイリング情報の確認例
    Profilingパネルを有効にすると、関数ごとの呼び出し回数や処理時間を確認できる。
    Python 3.12以降では、公式ドキュメントに記載された実行条件もあわせて確認。
    旧版のProfilingパネルに表示された関数ごとの処理時間

  • その他のパネルについて
    公式ドキュメントにはサードパーティ製のパネルも掲載されているが、Django Debug Toolbar本体による正式サポートの対象外である。
    導入前に、対応バージョンや更新状況を確認。

まとめ

  • Django Debug Toolbarの各パネルは、Django画面表示の内部状態を確認するための入口になる。
  • SQL、Templates、Timerなどは、性能調査や表示不具合の確認で特に役立つ。
  • DEBUG_TOOLBAR_PANELSを使うと、必要なパネルだけに絞って調査しやすくできる。
  • パネル構成はバージョンによって変わるため、旧版の画面例と利用中の公式ドキュメントを照合する。

参考文献

この記事を共有
Xで共有 Facebookで共有 LINEで共有



Copyright SIGMA-SE All Rights Reserved.
s-hama@sigma-se.jp