Django 子应用配置(apps.py)
Django 子应用配置(apps.py)
一 文件在哪
每创建一个子应用,Django 会自动生成 apps.py:
books/
├── migrations/
├── admin.py
├── apps.py ← 就是它
├── models.py
├── tests.py
└── views.py
二 默认长什么样
from django.apps import AppConfig
class BooksConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'books' # 应用名
三 能做什么
class BooksConfig(AppConfig):
name = 'books'
verbose_name = "书籍管理"
def ready(self):
# 项目一启动就会执行
from . import signals # 注册信号
verbose_name设置后以后管理端的 左侧导航栏从 “BOOKS” 变成 “书籍管理”。
ready() 是 Django 启动时每个 app 必定会执行一次的钩子。也就是项目一启动就注册信号。
那么信号又是什么呢,信号=事件+回调,“注册信号”就是 把事件和代码绑定:“Django,一旦 X 发生,就帮我执行 Y。”
from . import signals这句话就是把该目录下的 signals.py 模块整体引进来。
四 怎么让配置生效
-
老写法(不推荐)
INSTALLED_APPS = ['books']不会加载BooksConfig,后台仍叫 “Books”。 -
新写法(推荐)
INSTALLED_APPS = ['books.apps.BooksConfig']或者'books.apps.BooksConfig'的简写:INSTALLED_APPS = ['books']且 在apps.py中指定default_app_config = 'books.apps.BooksConfig'(Django ≤3.1)。 Django 3.2+ 无需简写,直接写全路径即可。
- 效果验证 重启服务 → 进入
/admin→ 左侧导航栏从 “BOOKS” 变成 “书籍管理”。
五 一句话总结
把 apps.py 当作子应用的「名片」:
-
想改中文名 → 设
verbose_name; -
想初始化/注册信号 → 重写
ready(); -
想让配置生效 →
INSTALLED_APPS里写xxx.apps.XxxConfig。
- 点赞
- 收藏
- 关注作者
评论(0)