NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
class **Apps** 应用程序注册表: 用于存储配置并提供内省。它还维护可用模型列表(跟踪模型,如:提供反向引用)。 公共 API --------- 提供以下公用 API(未列出的方法视为私密): #### apps.ready 布尔值属性,注册表被填充 且 所有`AppConfig.ready()`均被调用后该值会被设置为 True。 #### apps.get_app_configs() 返回所有应用的 AppConfig 实例。 是一个可迭代对象。 #### apps.get_app_config(app_label) 返回指定应用的 AppConfig 实例。 #### apps.is_installed(app_name) 检测应用是否被注册。 即:应用是否已填充在了注册表中。 #### apps.get_model(app_label, model_name, require_ready=True) 获取指定模型。 参数:`app_label`、`model_name` 不区分大小写。 前两个参数可以合并为一个参数 `app_label.model_name` 快速获取。 例子 ----- ~~~ $ python manage.py runserver $ python manage.py shell > from django import apps > apps.apps > <django.apps.registry.Apps at 0x1e79c50> # ----- apps API ----- > apps.apps.ready > True > apps.apps.get_app_configs() > odict_values([<PollsConfig: polls>, <AdminConfig: admin>, <AuthConfig: a uth>, <ContentTypesConfig: contenttypes>, <SessionsConfig: sessions>, <MessagesC onfig: messages>, <StaticFilesConfig: staticfiles>]) > apps.apps.get_app_config('polls') > <PollsConfig: polls> > apps.apps.is_installed('polls') > True > apps.apps.get_model('polls', 'Question') > polls.models.Question > apps.apps.get_model('polls', 'question') > polls.models.Question > apps.apps.get_model('polls.question') > polls.models.Question > apps.apps.get_model('polls.question', require_ready=False) > polls.models.Question # ----- 某个应用配置的属性 ----- > pollsConfig = apps.apps.get_app_config('polls') > pollsConfig.name > 'polls' > pollsConfig.verbose_name > '投票' > pollsConfig.label > 'polls' > pollsConfig.path > 'D:\\github\\mysite\\polls' > pollsConfig.module > <module 'polls' from 'D:\\github\\mysite\\polls\\__init__.py'> > pollsConfig.models_module > <module 'polls.models' from 'D:\\github\\mysite\\polls\\models.py'> ~~~ 初始化 加载应用 ---------------- 详见:[初始化过程 | 加载应用](https://docs.djangoproject.com/zh-hans/2.0/ref/applications/#initialization-process) django启动时,`django.setup()` 负责填充应用注册表。 三个阶段: 1. 导入项目 INSTALLED_APPS - 执行后,API `get_app_config()`变得可用 - *在此阶段,您的代码不应导入任何模型!* 2. 导入每个应用的模型 - 执行后,API `get_model()`变得可用 3. 运行每个应用的 `ready()` 方法