django.setup()的主要作用是实例化每个app,AppConfig的子类。实例中有app的信息。
from django.utils.version import get_version
VERSION = (2, 2, 3, 'final', 0)
__version__ = get_version(VERSION)
def setup(set_prefix=True):
"""
Configure the settings (this happens as a side effect of accessing the
first setting), configure logging and populate the app registry.
Set the thread-local urlresolvers script prefix if `set_prefix` is True.
"""
from django.apps import apps
from django.conf import settings
from django.urls import set_script_prefix
from django.utils.log import configure_logging
configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
if set_prefix:
set_script_prefix(
'/' if settings.FORCE_SCRIPT_NAME is None else settings.FORCE_SCRIPT_NAME
)
print('-----------start-------')
print('--settings.INSTALLED_APPS:', settings.INSTALLED_APPS)
apps.populate(settings.INSTALLED_APPS)
加载 setti

django.setup()主要用于初始化并实例化settings.INSTALLED_APPS中的应用,它加载自定义模块和models,创建一个全局Apps实例,维护着应用配置和模型列表。AppConfig.create()方法在populate()中被调用,根据INSTALLED_APPS创建AppConfig实例,记录应用信息并加载models。AppConfig是线程安全的,它的实现涉及到工厂模式和应用的元数据管理。

284

被折叠的 条评论
为什么被折叠?



