NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
class **AppConfig** 应用配置对象:存储应用程序的元数据 某些属性可以在 AppConfig 子类中配置。其他由 Django 设置并且是只读的。 可配置属性 ---------- #### AppConfig.name 应用程序的完整 Python 路径,例如 '`django.contrib.admin`'。 此属性定义配置适用的应用程序。**必须在所有 AppConfig 子类中设置它**。 它在Django项目中必须是唯一的。 #### AppConfig.label 应用程序的简称,例如 'admin' 当两个应用程序具有冲突标签时,此属性允许重新标记应用程序。它默认为最后一个组件name。它应该是一个有效的Python标识符。 它在Django项目中必须是唯一的。 #### AppConfig.verbose_name 应用程序的人类可读名称,例如“管理”。 此属性默认为label.title()。 #### AppConfig.path 应用程序目录的文件系统路径,例如 '`/usr/lib/python3.4/dist-packages/django/contrib/admin`'。 在大多数情况下,Django可以自动检测并设置它,但您也可以在AppConfig子类上提供显式覆盖作为类属性 。 在少数情况下,这是必需的; 例如,如果app包是具有多个路径的命名空间包。 只读属性 ----------- #### AppConfig.module 应用程序的根模块,例如: `<module 'django.contrib.admin' from 'django/contrib/admin/__init__.py'>` #### AppConfig.models_module 包含模型的模块,例如: `<module 'django.contrib.admin.models' from 'django/contrib/admin/models.py'>` 当应用程序不包含models模块时,此属性为 `None` 。 请注意,数据库相关信号(例如 pre_migrate和 post_migrate 仅针对具有 models 模块的应用程序)发出。 方法 ----- #### AppConfig.get_models() 返回应用模型中定义的所有 model 类(一个可迭代对象)。 #### AppConfig.get_model(model_name, require_ready=True) 返回指定 model 类。 参数 `model_name` 不区分大小写。 需要应用注册表被填充,除非指定参数 `require_ready=False`。 #### AppConfig.ready() AppConfig 子类可以重写此方法以执行初始化任务。如:注册信号。 注册表完全填充后立即调用它。 在 AppConfig 子类中,我们无法使用模型(此时注册表还未被填充)。但可以在 `ready()` 方法中通过 import 语句或 get_model() 调用模型。 ~~~ from django.db.models.signals import pre_save def ready(self): from .models import MyModel # import 导入模型 MyModel = self.get_model('MyModel') # get_model 导入模型 # 通过链式路径定义 信号寄件人 pre_save.connect(receiver, sender='app_label.MyModel') ~~~ 外传:[信号 | Django documentation | Django](https://docs.djangoproject.com/zh-hans/2.0/topics/signals/) **Warning**: 应当避免在 `ready()` 方法中使用模型进行数据增删改查。 `ready()` 方法会在每个启动期间执行,即使是在 test 测试中,如: ~~~ $ python manage.py test ~~~ **Notes**: 应当避免在 `ready()` 方法中使用模型进行数据增删改查。 `ready()` 方法会在每个启动期间执行,即使是在 test 测试中,如: ~~~ $ python manage.py test ~~~ 通常,`ready()` 方法仅会被 Django 调用一次,但在某些情况下(如 test 调试应用时)会被重复调用。建议在代码中打上标签,根据标签状态防止重复调用。