
1.2.1 调试django-admin命令
首先,从GitHub的Django项目中下载django-2.2.16.tar.gz包,解压缩后使用VSCode直接导入即可,如图1-2所示。

图1-2
本次调试的命令为django-admin startproject first_django。新建一个调试文件,单击侧边栏的Run图标,如果没有配置过调试信息,则会出现如图1-3所示界面。如果之前配置过调试信息,则直接在文件区修改.vscode目录下的launch.json文件即可。

图1-3
单击调试工作区的create a launch.json file链接,在弹出的窗口中单击Python文件调试打开的Python文件选项,即可创建Django源码调试文件,如图1-4所示。

图1-4
此时,VSCode在项目目录下会创建一个.vscode目录,里面有一个launch.json文件,其内容如下:


修改后的内容如下:

说明:在配置中可以写多个参数控制调试程序。下面简要说明部分参数及其值的作用,更多的参数配置可以参考VSCode的官方文档。
◎ program:提供Python程序入口模块的完全限定路径。推荐值为${file}。当在某个Python文件下按F5键或者是单击Run菜单下的Start Debugging命令时,${file}就是该Python文件的全路径。
◎ cwd:先进入某个目录,再执行相应的调试命令。
◎ env:它非常重要,没有它就无法搭建源码的调试环境。在Django源码中出现的导入语句,如from django等,希望能将其定位至下载的源码文件所在目录(django)下。因此,当调试Python项目的源码时,会使用该字段设定PYTHONPATH值。在django-2.2.16项目中,django目录就是源码的根目录,而django目录正好在项目目录下,因此只需设置PYTHONPATH=${workspaceRoot}即可。
◎ args:指定传递给Python程序的参数。
上面的调试配置主要是希望执行命令cd D:/learning-notes/book-code/django-code-analyze/chap01;django-admin startproject first_django,该命令使得新建的Django项目位于chap01目录中。为了让${file}等于Django源码下的bin/django-admin.py文件,在开始调试时就需要定位在该文件中。如果直接指定该命令文件的位置,如上面的注释语句,则无论在哪个文件上启动调试都可以。为了验证该调试配置得是否正确,可以在源码中打上断点,具体位置如图1-5和图1-6所示。

图1-5

图1-6
选中django/bin/django-admin.py文件,按F5键启动调试,此时程序停在断点一处,如图1-7所示。

图1-7
单击继续按钮后,程序停在断点二处,此时程序已进入Django内部的源码文件中,如图1-8所示。释放断点继续运行程序,可以看到在目录chap01中已生成了相应的Django项目文件。至此,Django的调试环境搭建成功,如图1-9所示。

图1-8

图1-9