本文研究的主要是Django1.10文档的深入学习,Applications基础部分的相关内容,具体介绍如下。
Applications应用
Django包含一个安装的应用程序的注册表,存储配置并提供内省。 它还保留了可用模型的列表。
这个注册表简单称为应用程序,它可以在django.apps中使用:
>>> from django.apps import apps>>> apps.get_app_config('admin').verbose_name'Admin'
Projects and applications项目和应用程序
术语项目描述了一个Django Web应用程序。项目Python包主要由设置模块定义,但通常包含其他内容。例如,当您运行django-admin startproject mysite时,您将得到一个mysite项目目录,其中包含一个具有settings.py,urls.py和wsgi.py的mysite Python包。项目包通常被扩展到包括与特定应用程序无关的诸如固定装置,CSS和模板之类的东西。
项目的根目录(包含manage.py)的根目录通常是未单独安装的所有项目应用程序的容器。
术语应用程序描述了一个提供一些功能的Python包。申请可以在各种项目中重复使用。
应用程序包括模型,视图,模板,模板标签,静态文件,URL,中间件等的一些组合。它们通常连接到具有INSTALLED_APPS设置的项目中,并且可选地使用其他机制,例如URLconfs,MIDDLEWARE设置或模板继承。
重要的是要了解Django应用程序只是一组与框架的各个部分进行交互的代码。没有应用程序对象这样的东西。但是,Django需要与安装的应用程序进行交互,主要用于配置和内省操作。这就是为什么应用程序注册表在每个安装的应用程序的AppConfig实例中维护元数据的原因。
没有限制项目包不能被认为是应用程序,并且有模型等(这将需要将其添加到INSTALLED_APPS)。
Configuring applications配置应用程序
要配置一个应用程序,子类AppConfig,并将虚线路径放在INSTALLED_APPS中的该子类中。
当INSTALLED_APPS只包含应用程序模块的虚线路径时,Django会检查该模块中的default_app_config变量。
如果定义了它,那该应用程序的AppConfig子类的虚线路径。
如果没有default_app_config,Django使用基础AppConfig类。
default_app_config允许早于Django 1.7的应用程序(如django.contrib.admin)选择加入AppConfig功能,而不需要用户更新其INSTALLED_APPS。
新的应用程序应该避免使用default_app_config。 相反,它们应该要求在INSTALLED_APPS中明确配置适当的AppConfig子类的虚线路径。
对于应用程序作者
新闻热点
疑难解答