django で pdb できないときは django-pdb を install する

ssh クライアントが理由なのかは原因を特定できていないが、django 上の適当な .py ファイルにて

import pdb; pdb.set_trace()
もしくは
breakpoint() # python3.7 以上のみ有効

を埋め込みしても Web サーバーを立ち上げているコンソールで pdb の操作が効かない。

django-pdb を導入したら問題なく p コマンドや n コマンドを実行できた。

django-pdb の導入方法

$ cd /path/to/mydjango-project
$ mkdir requirements_no_production
$ echo django >> requirements_no_production/development.txt # 本番用と分けておきたいのでこうしている
$ pip3 install -r requirements_no_production/development.txt

hello/views.py でデバッグする

...
def index(request):
  import pdb; pdb.set_trace()
  # python3.7 以上ならば
  # breakpoint() でもよい

上記を通る HTTP リクエストをしたらデバッグできる

> /home/matsu/workspace/mydjango-project/hello/views.py(13)index()
-> return HttpResponse('<h1>response</h1><pre>' + response.text + '</pre>')
(Pdb) p response
<Response [200]>

参考: