Djangoメモ(14) : Django Debug Toolbarでデバッグ情報を表示
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コマンド
も使用可能