先从一套最小行政城区开始。
python -m pip install Django
django-admin startproject central_admin
cd central_admin
python manage.py startapp permits此时目录大致会长这样:
central_admin/
├── manage.py
├── central_admin/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ ├── asgi.py
│ └── wsgi.py
└── permits/
├── admin.py
├── apps.py
├── migrations/
├── models.py
├── tests.py
└── views.py这里最重要的不是背文件名,而是分清两个角色:
Project(项目)
= 整座中央行政城区总规划
= 配置、总路由、总设置、部署入口
App
= 行政城区里的一个部门
= 比如:许可证处、公告处、用户处、财务处把 permits 加进项目:
INSTALLED_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
"permits",
]这一步像什么?
像是总规划局把“许可证处”正式列进了行政区编制。
项目和 app 的关系,一定要一次想对:
- 一个项目通常有多个 app
- 一个 app 应该围绕一类业务职责
- app 不是“页面文件夹”,也不是“数据库表文件夹”
- app 更像一个可独立思考的业务部门
一个很稳的判断标准是:
- “用户管理”可以是一个 app
- “文章系统”可以是一个 app
- “支付”可以是一个 app
- “首页、列表页、详情页”通常不是 app 的划分方式