やりたいこと
Djangoのエラー画面上(ブラウザ)でデバグする。
対話型シェルを使えるようにする。
⇣
django-extensions
とWerkzeug
というライブラリを使う。
django-extensionsって?
django-extensions
はmanage.py
の機能を拡張してくれるもので、 他にもいろいろながコマンドがあります。
Werkzeugって?
Werkzeugは、包括的なWSGI Webアプリケーションライブラリです。これは、WSGIアプリケーション用のさまざまなユーティリティの単純なコレクションとして始まり、最も高度なWSGIユーティリティライブラリの1つになりました。
WSGIを簡単に使えるようにするものってことですね。
WSGIって?
WSGI [1]は、サーバー、Pythonモジュール、フレームワーク、API、またはあらゆる種類のソフトウェアではありません。これは、サーバーとアプリケーションが通信するための単なるインターフェース仕様です。
PythonのWebフレームワークがいろいろと出てきて、バラバラの通信規格が存在するようになってしまったためインターフェースを統一する目的があったようです。
インストール
インストールして
$ pip install django-extensions Werkzeug
settings.pyに追記するだけ
...
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django_extensions', # <- 追記
]
...
コード
たとえば’test’という文字列を表示するだけのviewで
from django.shortcuts import render
from django.http import HttpResponse
def test(request):
message = 'test'
return HttpResponse(message)
変数message
を mesage
とタイプミスすると
⇣
from django.shortcuts import render
from django.http import HttpResponse
def test(request):
message = 'test'
return HttpResponse(mesage) # <- タイポ
実行
runserver
まずはいつものrunserverを実行。
$ python manage.py runserver
http://127.0.0.1:8000/ にアクセスします。
こんなエラー画面。
runserver_plus
今度はrunserver_plusを実行。
runserverをrunserver_plusに変えるだけ。
Debugger PIN
は後で使います。
$ python manage.py runserver_plus
...
* Debugger is active!
* Debugger PIN: 125-696-991 # <- これ
runserver_plusではこんな感じ。
コードのエリアをマウスオーバーすると、ターミナルアイコンが出てくるのでクリックします。
先程のDebugger PINを入力
対話型シェルが使えるようになります。
おしまい
最後まで読んでいただきありがとうございました。