0
1

DjangoをVSCodeで1行ずつデバックする方法

Last updated at Posted at 2024-08-08

はじめに

Djangoで開発をしていて、1行ずつデバックしたいのになかなか実現できなかったため、その原因と対処法を記載していきます。

参考にした記事

VSCodeでDjangoのアプリをデバッグ実行する

結論

基本、参考にした記事の通りに行えば、実現できます。
しかし、この記事の中で見落としていた箇所があり、私の場合時間がかかってしまいました。

見落としていた箇所

ディレクトリ構成です!
私の場合のディレクトリは以下のようになっていました。

system名
├──venv
├──django-project
│    ├──project
│    │    ├── config
│    │    ├── __init__.py
│    │    ├── asgi.py
│    │    ├── settings.py
│    │    ├── urls.py
│    │    ├── wsgi.py
│    │    └── __pychache__
│    └── 各アプリケーション
└──vue-project

この状態で参考記事通りに進めても、うまく行きません。
後述するlaunch.jsonで、各ディレクトリのパスを指定する必要があるため、自身のvディレクトリ構成がどのようになっているか確認しておきましょう。

launch.jsonの作成位置

私の場合、launch.jsonを作成する箇所は以下の通りでした。
※launch.jsonをどのように作成するかは、参考にした記事をご参照ください。

system名
├──venv
├──.vscode
│    └── launch.json #←ここ!!
├──django-project
│    ├──project
│    │    ├── config
│    │    ├── __init__.py
│    │    ├── asgi.py
│    │    ├── settings.py
│    │    ├── urls.py
│    │    ├── wsgi.py
│    │    └── __pychache__
│    └── 各アプリケーション
└──vue-project

参考記事との違いは、django-project内に作成しているか、していないか、です。
私の場合は、django-projectディレクトリの外に作成する必要がありました。

launch.jsonの作成位置が重要な理由

前述に少し記載しましたが、launch.jsonの設定の中で、ディレクトリのパスを指定する必要があるためです。

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python Debugger: Django",
              "type": "debugpy",
              "request": "launch",
              "args": [
                "runserver"
              ],
              "django": true,
              "autoStartBrowser": false,
            "program": "${workspaceFolder}/django-project/manage.py", -- ①
            "env": {
                    "PYTHONPATH": "${workspaceFolder}/venv/lib/python3.x/site-packages", -- ②
                    "VIRTUAL_ENV": "${workspaceFolder}/venv",
                    "PATH": "${workspaceFolder}/venv/bin:${env:PATH}",
                    "DJANGO_SETTINGS_MODULE": "project.settings.local",
            }
        }
    ]
}

①manage.pyのパスの指定

"program"キーに対する値は、manage.pyのパスを指定する必要があります。
${workspaceFolder}は、私のディレクトリ構成でいうsystem名です。

②venvのパスの指定

"env"オブジェクトの中で定義しているものについては、以下の通りです。

  • PYTHONPATH: Pythonがモジュールを検索するパスを指定
  • VIRTUAL_ENV: 仮想環境のパスを指定
  • PATH: 実行可能ファイルを検索するパスを指定

まとめ

以上のようにディレクトリ構成と、指定するパスに気をつけてみると、できました!
基本中の基本を見落としていたため、今後気をつけて行こうと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1