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设置->断点定位
每个不曾起舞的日子,都是对生命的辜负。