django文档学习之应用使用详解

  

本文研究的主要是Django1.10文档的深入学习,应用程序基础部分的相关内容,具体介绍如下。

  

  

Django包含一个安装的应用程序的注册表,存储配置并提供内省。它还保留了可用模型的列表。

  

这个注册表简单称为应用程序,它可以在django.apps中使用:

        在在在django。应用程序导入应用程序   在在在apps.get_app_config .verbose_name (“admin”)   “Admin”      

 django文档学习之应用使用详解

  

 django文档学习之应用使用详解

  

  

术语项目描述了一个Django Web应用程序。项目Python包主要由设置模块定义,但通常包含其他内容,例如,当您运行django-admin startproject mysite时,您将得到一个mysite项目目录,其中包含一个具有settings.py, urls . py和wsgi。py的mysite Python包。项目包通常被扩展到包括与特定应用程序无关的诸如固定装置,CSS和模板之类的东西。

  

项目的根目录(包含jobs)的根目录通常是未单独安装的所有项目应用程序的容器。

  

术语应用程序描述了一个提供一些功能的Python包。申请可以在各种项目中重复使用。

  

应用程序包括模型,视图、模板,模板标签,静态文件,URL,中间件等的一些组合。它们通常连接到具有INSTALLED_APPS设置的项目中,并且可选地使用其他机制,例如URLconfs,中间件设置或模板继承。

  

重要的是要了解Django应用程序只是一组与框架的各个部分进行交互的代码。没有应用程序对象这样的东西。但是,Django需要与安装的应用程序进行交互,主要用于配置和内省操作。这就是为什么应用程序注册表在每个安装的应用程序的AppConfig实例中维护元数据的原因。

  

没有限制项目包不能被认为是应用程序,并且有模型等(这将需要将其添加到INSTALLED_APPS)。

  

  

要配置一个应用程序,子类AppConfig,并将虚线路径放在INSTALLED_APPS中的该子类中。

  

当INSTALLED_APPS只包含应用程序模块的虚线路径时,Django会检查该模块中的default_app_config变量。

  

如果定义了它,那该应用程序的AppConfig子类的虚线路径。

  

如果没有default_app_config, Django使用基础AppConfig类。

  1.7

default_app_config允许早于Django的应用程序(如django.contrib.admin)选择加入AppConfig功能,而不需要用户更新其INSTALLED_APPS。

  

新的应用程序应该避免使用default_app_config。相反,它们应该要求在INSTALLED_APPS中明确配置适当的AppConfig子类的虚线路径。

  

  

如果您正在创建一个名为“摇滚乐”的可插拔应用程序,那么您将如何为管理员提供一个正确的名称:

        # rock_n_roll/apps.py      django。应用进口AppConfig      类RockNRollConfig (AppConfig):   name=' rock_n_roll '   verbose_name=皀”“摇滚”      

您可以使您的应用程序默认加载此AppConfig子类,如下所示:

        # rock_n_roll/__init__ . py      default_app_config=' rock_n_roll.apps.RockNRollConfig '      

当INSTALLED_APPS只包含“rockphasroll”时,这将导致使用RockNRollConfig。这允许您使用AppConfig功能,而不需要您的用户更新其INSTALLED_APPS设置。除了这个用例之外,最好避免使用default_app_config,而是如下所述在INSTALLED_APPS中指定应用配置类。

  

当然,您也可以告诉用户将“rock_n_roll.apps。RockNRollConfig”放在INSTALLED_APPS设置中。您甚至可以提供不同行为的几个不同的AppConfig子类,并允许用户通过其INSTALLED_APPS设置来选择一个。

  

推荐的约定是将配置类放在名为应用程序的应用程序的子模块中。但是,Django并不执行此操作。

  

您必须包含Django的名字属性,以确定此配置应用于哪个应用程序。您可以定义AppConfig API参考中记录的任何属性。

  

注意   

如果您的代码在应用程序的__init__。py中导入应用程序注册表,应用程序的名称将与应用程序子模块冲突。最佳做法是将该代码移动到子模块并将其导入。解决方法是以不同的名称导入注册表:

  
  

, django。应用程序导入应用程序django_apps
  

     

django文档学习之应用使用详解