创建完应用后,总目录如下:
~~~
mysite
mysite/
manage.py
mysite/
__init__.py
settings.py # 配置应用 -- INSTALLED_APPS 变量
urls.py
wsgi.py
polls
migratinos/
templates/
polls/
__init__.py
admin.py
apps.py # 配置应用 -- AppConfig 子类
models.py
tests.py
urls.py
views.py
~~~
配置应用:
1. 配置 INSTALLED_APPS 变量, 定义在 `setting.py` 文件中
2. 配置 AppConfig 子类(非必须),惯例定义在 `apps.py` 文件中
配置 INSTALLED_APPS
----------------------
- 参数:应用配置类
~~~
# settings.py
INSTALLED_APPS = [
'polls.apps.PollsConfig',
]
~~~
直接通过 应用配置类(AppConfig 子类),注册应用:
~~~
# polls/apps.py
from django.apps import AppConfig
class PollsConfig(AppConfig):
name = 'polls'
verbose_name = '投票'
~~~
- 参数:包含应用的 package 包
~~~
# settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
~~~
**default_app_config**:
django 会寻找包中的 `default_app_config` 变量,该变量保存了 AppConfig 子类的路径。
以 admin 应用举例:
~~~
# D:\Anaconda3\Lib\site-packages\django\contrib\admin\__init__.py
... 略 ...
default_app_config = 'django.contrib.admin.apps.AdminConfig'
~~~
**Notes**:
当通过应用中的 `__init__.py` 配置 `default_app_config` 时,需防止 apps 重名。
~~~
### in __init__.py
# 此时名字会发生冲突:
from django.apps import apps
import apps # 引用应用自身的 apps 子模块
# 最好这样引用:
from django.apps import apps as django_apps
~~~
配置 AppConfig 子类
----------------------
详见:本节 > AppConfig 子类
对于应用 作者
-------------
例如,创建一个可拔插重复使用的应用 `first_app`:
~~~
# settings.py
INSTALLED_APPS = [
'first_app.apps.FirstAppConfig',
]
# first_app/apps.py
from django.apps import AppConfig
class FirstAppConfig(AppConfig):
name = 'first_app'
verbose_name = "第一个应用,给其他用户使用"
# first_app/__init__.py
default_app_config = 'first_app.apps.FirstAppConfig'
~~~
这样,其他用户就可以直接使用而无需重复配置应用了。
对于应用 用户
--------------
例如,新项目中使用 `first_app`:
首先,通过 pip 安装第三方应用 `first_app`。
其次,创建自己的应用 `my_app`。
最后,配置 `my_app`。
~~~
# settings.py
INSTALLED_APPS = [
'my_app.apps.MyAppConfig',
]
# my_app/apps.py
from first_app.apps import FirstAppConfig
class MyAppConfig(FirstAppConfig):
verbose_name = "把 first_app 变成了 my_app"
~~~
- 开始
- 安装 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
- 模型
- 简介
- 字段
