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()` 方法
- 开始
- 安装 django
- 配置语言、时区
- 创建项目
- 执行项目
- Applications
- 应用
- 配置应用
- INSTALLED_APPS
- django apps 包
- AppConfig 子类
- 应用的复用
- 路由
- URLconf
- path
- 转换器
- re_path
- 捕获参数
- URL 反向解析
- include
- 额外参数
- URL 命名空间
- Settings
- Core Settings
- INSTALLED_APPS
- django API
- apps
- config.py -- AppConfig 类
- registry.py -- Apps 类
- db
- models.fields 包
- 字段类型
- 字段选项
- null、blank
- 模型
- 简介
- 字段
