A Complete Beginner's Guide to Djangoのチュートリアルを参考に掲示板アプリを作成中。
Django Debug Toolbar
アプリを作成中だがデバッグしやすいように色々なデバッグ情報を表示できるDjango Debug Toolbarを使ってみる。
インストール
インストール方法はこのドキュメントに書いてある。
現在のバージョンは1.9でDjango 1.11以上なら動作するとのこと。
最初にパッケージをインストールする。
$ pip install django-debug-toolbar
開発中のバージョンを使いたい場合は以下のようにインストール。
$ pip install -e git+https://github.com/jazzband/django-debug-toolbar.git#egg=django-debug-toolbar
今回はPipenvで環境を構築しているので下記コマンドでインストール。
$ pipenv install --dev django-debug-toolbar
次にsettings.pyのINSTALLED_APPSに'debug_toolbar'を追加する。
'django.contrib.staticfiles'も必要だがデフォルトで設定されているはず。
INSTALLED_APPS = [
# ...
'django.contrib.staticfiles',
# ...
'debug_toolbar',
]
STATIC_URL = '/static/'
続いてURLconfを編集する。Django 2.0を使用しているのでpathを使うことにする。
from django.conf import settings from django.urls import path, include if settings.DEBUG: import debug_toolbar urlpatterns = [ path('__debug__/', include(debug_toolbar.urls)), ] + urlpatterns
settings.pyのMIDDLEWAREに追加。
MIDDLEWARE = [
# ...
'debug_toolbar.middleware.DebugToolbarMiddleware',
# ...
]
最後にsettings.pyにINTERNAL_IPSを追加する。
ローカル開発環境では127.0.0.1を指定ということだがVagrant環境のためか動作しなかった。
INTERNAL_IPS = ['127.0.0.1']
192.168.33.10を指定しても動作しなかったので調べたところ、ここにはREMOTE_ADDRを指定するらしい。
REMOTE_ADDRの確認方法だが、アプリを適当に編集してTracebackを出すとRequest informationのMETAの中にREMOTE_ADDRが確認できる。

このREMOTE_ADDRを指定するとDjango Debug Toolbarが表示されるようになった。
INTERNAL_IPS = ['127.0.0.1', '192.168.33.1']

各パネルの表示内容
Django Debug Toolbarは複数のパネルで構成されているのでデフォルトで設定されているパネルを見てみる。
Versions

Time(時刻)

Settings

Headers

Request

SQL

Static files

Templates

Cache

Signals(フレームワークのどこかで起きたアクションに応じた通知を受ける仕組み)

Logging(loggingモジュールの出力)

Intercept redirectsパネルはデフォルトでは表示されるが無効になっている。このパネルはリダイレクト処理をデバッグするときに役立つようだが、通常時は邪魔になるため無効にしているようだ。
パネル設定
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',
]
下記内容をsettings.pyに指定すると図のようになる。
DEBUG_TOOLBAR_PANELS = [
'debug_toolbar.panels.timer.TimerPanel',
'debug_toolbar.panels.versions.VersionsPanel',
'debug_toolbar.panels.profiling.ProfilingPanel'
]

一番下の'debug_toolbar.panels.profiling.ProfilingPanel'はビルトインパネルだがデフォルトで無効にされているProfilingパネルでプロファイリング情報が表示できる。

ドキュメントではサードパーティのパネルも紹介されている。
debugsqlshellコマンド
Django Debug Toolbarをインストールするとdebugsqlshellコマンドが使えるようになっている。
これはpython manage.py shellのような対話型シェルだがSQL文も出力されるようになる。

まとめ
- Django Debug Toolbarで色々なデバッグ情報を表示可能
- インストールでは
INTERNAL_IPSの設定に注意 - 複数のパネルで構成されておりパネルは追加・削除が可能
debugsqlshellコマンドも使用可能