Djangoのデバッグツールバー
symfonyからDjangoに移ってきた関係で、Djangoのいいところもいろいろ分かったのだけれど、ちょっと気に入らないところも見えてきた今日この頃。
その1つ目がデバッグツールバー。symfonyには標準で備わっていて、そのページで実行されたSQLや使用されたテンプレート、エラーログも見られて、拡張も出来る優れものなんだけど、Djangoには標準で備わっていなくて不便だなと思っていました(実際、そんなに開発してはいないけど)。
そんなときに見つけたのが、django-debug-toolbarでした。これがsymfonyのものとほとんど同じ機能を提供してくれる感じで、なかなか便利そう。というわけで、インストールの手順と、設定方法を残しておきます。
インストール
まずeasy_installをインストールしておく。
$ wget http://peak.telecommunity.com/dist/ez_setup.py $ sudo python ez_setup.py
django-debug-toolbarをインストール。
$ sudo easy_install django-debug-toolbar
設定
Djangoプロジェクトのsettings.pyを編集。http://github.com/robhudson/django-debug-toolbar/blob/master/README.rst を参考に。
- settings.py:
... INTERNAL_IPS = ('127.0.0.1',) DEBUG_TOOLBAR_PANELS = ( 'debug_toolbar.panels.version.VersionDebugPanel', 'debug_toolbar.panels.timer.TimerDebugPanel', 'debug_toolbar.panels.settings_vars.SettingsVarsDebugPanel', 'debug_toolbar.panels.headers.HeaderDebugPanel', 'debug_toolbar.panels.request_vars.RequestVarsDebugPanel', 'debug_toolbar.panels.template.TemplateDebugPanel', 'debug_toolbar.panels.sql.SQLDebugPanel', 'debug_toolbar.panels.signals.SignalDebugPanel', 'debug_toolbar.panels.logger.LoggingPanel', ) DEBUG_TOOLBAR_CONFIG = { 'INTERCEPT_REDIRECTS': False, #'SHOW_TOOLBAR_CALLBACK': custom_show_toolbar, #'EXTRA_SIGNALS': ['myproject.signals.MySignal'], 'HIDE_DJANGO_SQL': False, #'TAG': 'div', } ... MIDDLEWARE_CLASSES = ( ... 'debug_toolbar.middleware.DebugToolbarMiddleware', ) ... INSTALLED_APPS = ( ... 'debug_toolbar', )
INTERNAL_IPSにIPアドレスを指定しておくと、そのIPアドレスからアクセスしたときだけデバッグツールバーが表示されるようになります。また、DEBUG = False にすると、常時デバッグツールバーが表示されなくなります。ただし、SHOW_TOOLBAR_CALLBACK を指定していない場合だけ。
DEBUG_TOOLBAR_CONFIG の簡単な説明
- INTERCEPT_REDIRECTS
- Trueだと、リダイレクト時(HttpResponseRedirectを返したとき)に、中間ページを表示してログなどを見られるようにする(デフォルト: True)
- SHOW_TOOLBAR_CALLBACK
- ツールバーを表示するかどうかを制御する関数を指定。その関数はTrue/Falseを返すようにする。省略、もしくはNoneを指定しておくとデフォルトの動作(DEBUGとINTERNAL_IPSを見る)
- EXTRA_SIGNALS
- プロジェクトで使ってるカスタムシグナル(Observerパターンみたいなやつ?)をリストで指定。
- SHOW_TEMPLATE_CONTEXT
- Trueだと、テンプレートに渡されている変数(コンテキスト)をテンプレートパネルに表示する。(デフォルト: True)
- TAG
- どのタグにデバッグツールバーのHTMLを埋め込むか。指定したタグのうち、最外殻(?)のタグ内の最後に埋め込まれるみたい。デフォルトだとbodyタグ内の最後に埋め込まれる。
追記(2010/8/23)
DEBUG_TOOLBAR_CONFIGには以下のものも設定できるようです。
- MEDIA_URL
- django-debug-toolbarが使っているCSS等のURLのプレフィックス。デフォルトでは、<リクエストのSCRIPT_NAMEヘッダ>/__debug__/m/。ただし、URLディスパッチャでは、/__debug__/m/ となることを想定しているようなので、SCRIPT_NAMEヘッダが指定されているリクエストが送られると、スタイルが適用されなくなる。その場合は、これに"/__debug__/m/"を指定すればOK。
Apacheの設定で指定した"django.root"がSCRIPT_NAMEにくるようなので、そのままの設定で問題ないです。基本的にはいじらず、独自のCSSを使いたいときだけ設定するのだと思います。