Django manage.py模块runserver命令的启动过程:
- 加载配置的过程: 可参考我的另一篇文章
- django.setup()
伪代码:
# manage内--help等命令行选项的配置可通过python标准库的ArgumentParser类进行配置,这里就不赘述了。
# 首先导入配置文件
from django.conf import settings
settings.INSTALLED_APPS # 调用django settings对象的INSTALLED_APPS属性,开始懒加载配置
django.setup()
django.setup()
- 配置日志
- set_prefix 设置url_prefix
- django.apps.populate(settings.INSTALLED_APPS) 加载app
apps.populate()加载app部分是核心:
apps对象是Apps(installed_apps=None)类的实例,初始在框架内已被创建,创建时,installed_apps属性为None
在apps.populate(settings.INSTALLED_APPS)执行后加载。(提前创建实例的好处在于单一对象方便框架代码调用)
apps.populate(settings.INSTALLED_APPS)的执行过程主要做了两件事: