Djangoメモ(6) : shell_plusで補完、履歴活用、モデル自動インポート、SQL出力
Django Extensionsのインストール
前回、対話型シェルを操作したがコマンド履歴が使えなかったりと不便だったので調べてみたところDjango Extensionsに含まれるshell_plus
を使うのがよさそう。
Django ExtensionsはDjangoの拡張機能を集めたパッケージでpip
でインストールできる。
$ pip install django-extensions
今回はpipenv
で環境を構築しているので下記コマンドでインストール。
$ pipenv install --dev django-extensions
インストールが完了したら有効にするためにINSTALLED_APPS
に追加する。
INSTALLED_APPS = (
...
'django_extensions',
...
)
Django Extensionsにはshell_plus
の他にgraph_models
, show_urls
, validate_templates
, runserver_plus
といったコマンドも含まれている。
shell_plus
shell_plus
は対話型シェルとしてIPython, bpython, ptpythonを指定でき、モデルの自動インポートを可能にする。
3つとも試してみるので下記コマンドでインストール。
$ pipenv install --dev ipython $ pipenv install --dev bpython $ pipenv install --dev ptpython
もし全部が使える状態だと優先度はptpython
, bpython
, ipython
, python
となる。
起動するシェルを指定する場合は--ipython
のようにオプションを指定するか、settings.py
にSHELL_PLUS
を追加する。
# Always use IPython for shell_plus SHELL_PLUS = "ipython"
3つとも起動時に自動でモデルがインポートされるため、インポート文を入力する必要がなくなり便利。
IPython
IPythonはWikipediaによると「Python に比較して、型推定を強化し、対話的実行のための文法を追加してあり、コード・ハイライティングおよびタブによる補完が行える。」とのこと。
$ python manage.py shell_plus --ipython
bpython
bpythonは軽量でシンタックスハイライト、パラメータリスト表示、オートインデント、補完ができるのが特徴。
$ python manage.py shell_plus --bpython
ptpython
ptpythonは下記記事を参照。
$ python manage.py shell_plus --ptpython
SQL出力
shell_plus
ではDEBUG = True
の場合に実行されるSQLを出力することができる。
方法は--print-sql
オプションを指定するか、
$ python manage.py shell_plus --print-sql
settings.py
に下記設定を追加。
# print SQL queries in shell_plus SHELL_PLUS_PRINT_SQL = True
まとめ
- Django ExtensionsはDjangoの拡張機能を集めたパッケージ
shell_plus
は対話型シェルとしてIPython, bpython, ptpythonを指定可能shell_plus
はモデルを自動インポート--print-sql
でSQLを出力可能