<p>这是Django 1.7的新特性<a href="https://docs.djangoproject.com/en/1.9/ref/applications/"><em>Application Configuration</em></a>。</p>
<p>基本上,现在可以在<code>INSTALLED_APPS</code>中列出包含应用程序的模块或从<code>django.apps.AppConfig</code>派生并定义应用程序行为的类。</p>
<p>此功能提供了几个优点:</p>
<ul>
<li>可以更容易地配置应用程序,甚至可以为自定义设置子类。</li>
<li>在同一个模块中可以有多个应用程序。</li>
</ul>
<p>应用程序模块可以定义特殊的模块变量<code>default_app_config</code>,以指定其<code>AppConfig</code>的名称,这样它们就可以使用新功能,而不必在<code>INSTALLED_APPS</code>中指定该类的全名。但这是一个向后兼容特性,建议新应用程序编写完整的<code>AppConfig</code>名称。</p>
<p>无论如何,大多数<code>django/contrib</code>应用程序都使用这个<code>default_app_config</code>,以与旧配置兼容。例如,请参见文件<code>django/contrib/messages/__init__.py</code>只是:</p>
<pre><code>from django.contrib.messages.api import *
from django.contrib.messages.constants import *
default_app_config = 'django.contrib.messages.apps.MessagesConfig'
</code></pre>
<p>因此,根据操作请求将其相加:</p>
<ul>
<li>如果添加类型名<code>INSTALLED_APPS</code>,则该类将用于设置1.7样式的<code>foo</code>应用程序(推荐)。</li>
<li><p>如果添加<code>INSTALLED_APPS</code>纯名称<code>foo</code>,则:</p>
<ul>
<li>如果有变量<code>foo.default_app_config</code>,这个类将用于设置<code>foo</code>应用程序,1.7样式。大部分(全部?)标准的Django应用程序有这个变量,因此当您从Django-1.6升级到Django-1.7时,不需要更改您的<code>INSTALLED_APPS</code>。</li>
<li>如果没有这样的变量,那么将使用1.6样式的应用程序,其中包含高级配置选项的默认值。</li>
</ul></li>
</ul>