1. ホーム
  2. python

[解決済み] django シェルでモジュールを再読み込みするには?

2022-11-27 17:49:04

質問

私は Django を使っていて、いつも Django シェルを使っています。厄介なのは、Django サーバはコード変更時に再読み込みしますが、シェルはそうしないので、テスト中のメソッドに変更を加えるたびに、シェルを終了して再起動し、必要なモジュールをすべて再インポートし、必要な変数をすべて再初期化しなければならないなどという点です。iPythonの履歴を使えば、このような入力の手間を省くことができますが、それでもこれは苦痛です。django 開発サーバと同じように、django シェルを自動でリロードさせる方法はありませんか?

reload() については知っていますが、私は多くのモデルをインポートしており、一般的には from app.models import * 構文を使うので、reload()はあまり役に立ちません。

どのように解決するのですか?

dongweiming氏が述べたように、django-extensionsプロジェクトを使用することをお勧めします。ただし、管理コマンドは 'shell_plus' ではなく、'shell_plus' を使ってください。

manage.py shell_plus --notebook

これでウェブブラウザ上にIPythonのノートブックが開かれます。そこにコードを書き、インポートなどを行い、実行します。

モジュールを変更したら、ノートブックのメニュー項目「Kernel->Restart」をクリックするだけです。

これで、あなたのコードは変更したモジュールを使用するようになりました。