在 Django 1.9中 apps.py 的用途是什么?

我刚刚查看了 Django 1.9的 alpha 版本说明,看到了 startapp管理命令 现在添加一个 apps.py 文件

这个文件的目的是什么? Startapp 文档没有提供更多的信息。

57292 次浏览

这是建议的地方把你的 应用程序配置。这个特性从1.7开始就存在了,但是为了促进它的使用并启用更简单的配置,apps.py文件被添加到默认的应用程序模板中。

apps.py档案的目的:

创建这个文件是为了帮助用户包含应用程序的任何 应用程序配置。使用它,您可以配置应用程序的一些属性。

来自 Application Configuration文档:

应用程序配置对象存储应用程序的元数据。 一些属性可以在 AppConfig 子类中配置 由 Django 设置并且是只读的。

来自 文件:的例子

假设您正在创建一个名为 "Rock ’n’ roll"的可插拔应用程序,然后为管理员提供一个合适的名称,我们可以执行以下操作:

rock_n_roll应用程序中,我们创建一个 RockNRollConfig AppConfig 类。

#rock_n_roll/apps.py
from django.apps import AppConfig


class RockNRollConfig(AppConfig): # Our app config class
name = 'rock_n_roll'
verbose_name = "Rock ’n’ roll"

通过在 rock_n_roll/__init__.py文件中指定 default_app_config,我们可以使您的应用程序在默认情况下加载这个 AppConfig子类。

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

这样做将导致在 INSTALLED_APPS只包含 'rock_n_roll'时使用 RockNRollConfig。这使我们能够利用 AppConfig的功能,而不需要我们的用户更新他们的 INSTALLED_APPS设置。

apps.py只是更新应用程序相关配置以及现在使用以下命令创建新应用程序的替代方法

python manage.py startapp myapp

您不需要更新 settings.INSTALLED_APPS,上面的命令将默认添加下面的代码到相应的 myapp/apps.py文件中

from django.apps import AppConfig




class myappConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'myapp'