開発環境「Visual Studio Code」(以後VsCode)で、django3の開発と、Webアプリケーションの実行・デバッグのやり方を確認します。
目次
VsCodeでDjango3用設定・サーバー実行・デバッグ実行
開発環境「Visual Studio Code」(以後VsCode)で、django3の開発と、Webアプリケーションの実行・デバッグのやり方を確認します。
OSは、Windows10です。
・PCにAnacondaがインストールされていること。
・Djangoもインストールされていること。
・VsCodeのインストールと、Python・Anacondaのエクステンションのインストールなど、こちらの記事の手順が終わっていること。
Django3のインストールがまだの場合は、やっておいてください。
Django3プロジェクト用settings.json
django3用の特別な設定は必要ありません。
.vscode以下のsettings.jsonに、最低限、以下の設定をしておくと便利です。
{ "python.linting.pylintEnabled": false, "python.linting.flake8Enabled": true, "python.linting.enabled": true, "python.formatting.provider": "autopep8", "python.formatting.autopep8Args": [ "--aggressive", "--aggressive", ], "files.autoSave": "afterDelay", "files.autoSaveDelay": 1000, "python.linting.lintOnSave": true, "python.linting.flake8Args": [ "--ignore=W293, W504, w501, E501", ], }
pep8の文法チェッカとフォーマッタの設定です。
E501の1行の文字数エラーを抑制する設定にしています。
これをしないと、settings.jsonで79文字を超える行がある・・というエラーがでます。
flake8やautopep8がインストールされていないと、VSCodeがインストールするかきいてくるので、インストールしておきます。
VSCodeで開くフォルダ
VSCodeのフォルダを開くで指定するのは、Djangoのプロジェクトフォルダ(manage.pyのあるフォルダ)にする必要があります。
そうでないと、デバッグ実行時にいったんエラーになって、manage.pyのパスを入力したりしないといけなくなるので面倒です。
Django3サーバーの実行確認
コマンドパレットを開きます。
Ctrl+Shift+P を押すか、右クリックメニューの「コマンドパレット」です。
ここで「pythonインタープリターを選択」を選び、djangoをインストールしている仮想環境を選択します。
あとは。
ターミナル>新しいターミナルで、ターミナルを開きます。
ターミナルが立ち上がって、選択した仮想環境のActivateまで自動でしてくれます。
プロジェクトフォルダをカレントにして、以下のコマンドを打ち込んで、djangoサーバーを動かします。
python manage.py runserver
で。
こういう表示になれば動いてます。
いったん、ターミナルで「Ctrl+C」を入力して、終わらせときます。
Django3デバッグ実行
WebアプリケーションのDebugの手順といっても動かし方が違うだけです。
メニューの「デバッグ>デバッグの開始」で、以下のリストを開いて、「Django」を選びます。
(VSCodeで複数言語の開発を平行している場合は、いったん、Pythonを選んでから、下記のリストを開かないといけない場合もあります)
そうすると、デバッグモードでさっきの実行時と同じようにサーバーが立ち上がるので、動かすのはブラウザでURLをたたく同じ方法でOKです。
ブレイクポイントを仕掛けたい行を選択して、F9キーを押します。
ブレイクポイント行に赤丸がつきます。
あとは、普通にブラウザで動かすと、ブレイクポイントで止まりますから、ステップ実行して変数等の値を確認してデバッグをすればいいです。
ちなみに、アイコンですが。
左から。
- 続行
- ステップオーバー
- ステップイン
- ステップアウト
- 再起動
- 停止
となっています。
これで、VsCode上でDjangoアプリケーションのデバッグができます。
ちなみに。
ステップインは基本的に1行単位で実行されます。
関数呼び出しの行だと、その関数の内部にはいっていきます。
当たりをつけたメソッドの中の問題をピンポイントで見つけるときとかに使います。
ステップオーバーも1行単位で実行されます。
ステップインと違い、関数があった場合その関数を実行して次の行に移行します。
通常、ブレイクポイントで止めてから、ステップオーバーで問題のある個所(関数)にあたりをつけて、ステップインして原因を掘り下げる・・みたいな感じになります。
ステップアウトは実行中の関数の外(呼び出し元)に出るまでプログラムを進めます。
関数の動作チェック中に呼び出し元に戻りたい時に使えます。
続行は、文字通りブレイクポイントで止めたところから、アプリケーションの実行を再開します。
ループ中の特定データでのみ問題が発生するようなケースだと、ループ中のエラーが発生している行の上あたりにブレイクポイントを仕掛けて、続行の連打で、エラーが発生するデータにあたりをつけたりとかします。
てな感じですかね。
ではでは。