django.setup() 源码分析

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值