概要
Django Debug Toolbarで確認できる代表的な表示パネルと、DEBUG_TOOLBAR_PANELSによるカスタマイズ方法を整理する。
Toolbarの各パネルは、バージョン、処理時間、SQL、テンプレート、キャッシュ、ログなど、画面表示時の内部情報を確認する入口になる。どのパネルで何を見られるかを知っておくと、原因調査の流れを作りやすい。
この記事で扱うこと
- Versions、Time、Settingsなどの基本パネルの役割。
- Headers、Request、SQL、Templatesで確認できる情報。
- Cache、Signals、Logging、Redirectsの使いどころ。
- DEBUG_TOOLBAR_PANELSで表示パネルを変更する方法。
- プロファイリング用パネルを追加する考え方。
作業前に確認すること
| 項目 | 確認内容 |
|---|---|
| 表示パネル | 調査したい対象に応じて見るパネルを選ぶ。 |
| SQLパネル | N+1問題やクエリ回数の確認に使う。 |
| Templatesパネル | どのテンプレートが使われたかを確認する。 |
| Loggingパネル | 画面表示時に出力されたログを確認する。 |
| カスタマイズ | 必要なパネルだけを表示して調査しやすくする。 |
作業時の注意点
| 作業時の注意点 | 整理するポイント |
|---|---|
| パネルの見方 | 全パネルを見るより、調査目的に合わせて見る場所を決める。 |
| Timeの解釈 | サーバー処理とブラウザ側の表示時間を混同しない。 |
| SQLの多さ | クエリ数だけでなく、同じSQLが繰り返されていないかを見る。 |
| Redirects | 有効化するとリダイレクト動作が変わるため、調査時だけ使う。 |
実施内容
表示パネルの概要説明
以下、インストール後の初期状態から表示されているデフォルトパネルについて説明する。
-
Versions
Webアプリで使用されているモジュール(フレームワーク、言語、プラグイン等)のバージョン情報が表示される。
-
Time(時刻)
現在の画面が表示されるまでの各処理に要した時間が確認できる。

- Resource usage > User CPU time
クライアントからリクエストを受信してからページ構成を準備するまでの時間。 - Resource usage > System CPU time
「User CPU time」の後にサーバーがレスポンス情報を作成し、クライアントに返すまでの時間。 - Resource usage > Total CPU time
リクエストを受信してからクライアントに返すまでの時間。
(「User CPU time」 + 「System CPU time」 の合計) - Resource usage > Elapsed time
「Total CPU time」は、HTML、CSS、JavaScriptに関するサーバー処理とクライアント側のレンダリング時間を含めた値。 - Resource usage > Context switches
voluntary context switchesは、複数のプロセスを効率良く実行するため、自発的にコンテキストスイッチを実行した回数でinvoluntary context switchesは、実行優先度が高いプロセスを実行するために、強制的にコンテキストスイッチを実行した回数。
- Resource usage > User CPU time
-
Settings
settings.pyを一覧で確認できる。
-
Headers
HTTPのリクエストヘッダー情報、レスポンスヘッダー情報を確認できる。
-
Request
ViewやCookie、Sessionなどのリクエスト情報を確認できる。
-
SQL
画面が表示されるまでに実行されたSQL文をはじめ、それぞれに要した実行時間やStacktraceを確認できる。
-
Static Files
画面を表示する際に読み込んだStaticファイルを確認できる。
-
Templates
画面を表示する際に使用された継承も含むTemplateファイルを確認できる。
-
Cache
画面を表示する際に利用されたキャッシュバックエンド情報を確認できる。
-
Signals
フレームワークに備わっている各アクション単位での通知の受け渡し一覧。
-
Logging
loggingモジュールで出力したログが確認できる。
-
Intercept redirects
デフォルト無効であるチェックボックスを有効にするとリダイレクトが中断されるようになる。
※ リダイレクト処理をデバッグするときに使用する。
表示パネルのカスタマイズ
上記デフォルトパネルは、settings.pyのDEBUG_TOOLBAR_PANELSに設定されている。
-
settings.pyの
DEBUG_TOOLBAR_PANELS(デフォルト) 下記DEBUG_TOOLBAR_PANELSを変更することでパネルの並び替えや削除、追加ができるようになる。DEBUG_TOOLBAR_PANELS = [ '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.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.redirects.RedirectsPanel' ] -
プロファイリング情報の追加例
DEBUG_TOOLBAR_PANELS = [ '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.cache.CachePanel', 'debug_toolbar.panels.signals.SignalsPanel', 'debug_toolbar.panels.logging.LoggingPanel', 'debug_toolbar.panels.profiling.ProfilingPanel' # 追記 ]末尾に追加したプロファイリング情報が確認できるようになる。
-
その他のパネルについて 下記サードパーティ製のパネルを参照。
https://django-debug-toolbar.readthedocs.io/en/stable/panels.html#third-party-panels
実務とのつながり
- 性能改善
SQL回数や処理時間を見てボトルネックを探せる。 - テンプレート調査
継承関係や読み込まれたテンプレートを確認できる。 - デバッグ設計
調査に必要なパネルだけを残すと、確認作業が効率化する。
まとめ
- Django Debug Toolbarの各パネルは、Django画面表示の内部状態を確認するための入口になる。
- SQL、Templates、Timeなどは、性能調査や表示不具合の確認で特に役立つ。
- DEBUG_TOOLBAR_PANELSを使うと、必要なパネルだけに絞って調査しやすくできる。