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 AppConfigclass...
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
。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)