A Complete Beginner's Guide to Djangoのチュートリアルを参考に掲示板アプリを作成中。
Django Extensions, Werkzeugのインストール
アプリを作成中だがデバッグしやすいようにDjango Extensionsに含まれるrunserver_plusを使ってみる。
Django ExtensionsはDjangoの拡張機能を集めたパッケージでpipでインストールできる。
runserver_plusを使用するにはWerkzeug(ドイツ語で工具、道具という意味)というWSGI Webアプリケーションライブラリが必要なので併せてインストールする。
$ pip install django-extensions Werkzeug
今回はPipenvで環境を構築しているので下記コマンドでインストール。
$ pipenv install --dev django-extensions Werkzeug
インストールが完了したら有効にするためにINSTALLED_APPSに追加する。
INSTALLED_APPS = (
...
'django_extensions',
...
)
なお、Django Extensionsではshell_plusという対話型シェルを便利にするコマンドも使える。
runserver_plusの使い方
runserver_plusは普段使用しているrunserverコマンドをrunserver_plusコマンドに置き換えれば使える。
起動するとDebugger PINが表示されるが後で使うので覚えておく。
$ python manage.py runserver_plus 0:3000 * Running on http://0:3000/ (Press CTRL+C to quit) * Restarting with stat Performing system checks... System check identified no issues (0 silenced). Django version 2.0.2, using settings 'myproject.settings' Development server is running at http://0:3000/ Using the Werkzeug debugger (http://werkzeug.pocoo.org/) Quit the server with CONTROL-C. * Debugger is active! * Debugger PIN: XXX-XXX-XXX
例えば以下のようなビュー関数があったとして、
def board_topics(request, pk): board = Board.objects.get(pk=pk) return render(request, 'topics.html', {'board': board})
データが存在しないページにアクセスすると図のような画面が表示されるようになる。

ここで背景色があるコードをクリックすると周辺コードが表示される。

さらに右端のアイコンをクリックすると対話型シェルが起動するが、PINの入力を要求されるので入力する。

これで対話型シェルが使える状態になる。

ページの最後にdump(), dump(obj)が使えるという説明があるので使ってみる。

それぞれを実行した結果。もちろん通常のPythonコードも実行できる。

まとめ
- Django ExtensionsはDjangoの拡張機能を集めたパッケージ
runserver_plusはエラー発生時に対話型シェルを起動できるdump(),dump(obj)で変数一覧、オブジェクト詳細情報を表示