django源码学习(一)

debug环境调试

调试和测试源码步骤

  • 开发软件 vscode
  • vscode设置以及环境配置
  • 指令研究:django-admin startproject [projectname] 过程
  • 生成项目文件夹

目的:了解django-admin startproject指令执行过程;
指令被放在argv参数里,并优先取出文件路径,对其进行正则匹配;

# argv列表里存放的数据:  
# 0:'E:/django源码/django-4.0.5/django/bin/django-admin.py'
# 1:'startproject'
# 2:'first_django'
# len():3
sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$','',sys.argv[0])

sys.exit(execute_from_command_line())

参数传到ManagementUtility(argv) 该函数,该函数对所传参数进行判断;最后执行完毕,就结束该指令;

def execute_from_command_line(argv=None):

    """Run a ManagementUtility."""

    utility = ManagementUtility(argv)

    utility.execute()
class ManagementUtility:

    """

    Encapsulate the logic of the django-admin and manage.py utilities.

    """

  

    def __init__(self, argv=None):

        self.argv = argv or sys.argv[:]

        self.prog_name = os.path.basename(self.argv[0])

        if self.prog_name == "__main__.py":

            self.prog_name = "python -m django"

        self.settings_exception = None

vscode设置以及debug配置

{

    // 使用 IntelliSense 了解相关属性。

    // 悬停以查看现有属性的描述。

    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",

    "configurations": [

        {

            "name": "Python: Django",

            "type": "python",

            "request": "launch",

            "program": "E:/django源码/django-4.0.5/django/bin/django-admin.py",

            "cwd": "E:/django源码/code",

            "env": {"PYTHONPATH":"${workspaceRoot}"},

            "args": [

                "startproject",

                "first_django"

            ]

        }

    ]

}
  
//program指的是要运行的Python代码文件

//cwd是要cd进入的文件目录

//args是指令的参数

遇到的问题小结

  • 解释器没有安装相应的环境依赖,导致报出Django - "no module named django.core.management" 这样的问题
    由于安装了不同版本python的解释器,所以导致了对不同版本的解释器的依赖环境不够了解,导致了报错;

  • 以上的过程小结一下就是下载源代码 ->python解释器安装 ->vscode debug设置->断点定位

posted @ 2022-09-17 15:49  JaydenHuan  阅读(63)  评论(0编辑  收藏  举报