Django 子应用配置(apps.py)

举报
周杰伦本人 发表于 2025/07/30 14:16:11 2025/07/30
【摘要】 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+ 无需简写,直接写全路径即可。

  1. 效果验证 重启服务 → 进入 /admin → 左侧导航栏从 “BOOKS” 变成 “书籍管理”。

五 一句话总结

apps.py 当作子应用的「名片」:

  • 想改中文名 → 设 verbose_name

  • 想初始化/注册信号 → 重写 ready()

  • 想让配置生效 → INSTALLED_APPS 里写 xxx.apps.XxxConfig

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

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。