【发布时间】:2015-12-24 01:21:06
【问题描述】:
我刚刚翻过alpha release notes for Django 1.9,看到startapp管理命令now adds an apps.py file。
这个文件的目的是什么? startapp documentation 没有提供更多信息。
【问题讨论】:
标签: django
我刚刚翻过alpha release notes for Django 1.9,看到startapp管理命令now adds an apps.py file。
这个文件的目的是什么? startapp documentation 没有提供更多信息。
【问题讨论】:
标签: django
apps.py 文件的用途:
创建此文件是为了帮助用户为应用添加任何application configuration。使用它,您可以配置应用程序的一些属性。
来自Application Configuration 文档:
应用程序配置对象存储应用程序的元数据。 一些属性可以在 AppConfig 子类中配置。其他的是 由 Django 设置,只读。
来自docs:的示例
假设您正在创建一个名为 "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 设置。
【讨论】:
without requiring our users to update their INSTALLED_APPS setting. :这是什么意思:基本上如果我不做default_app_config = 'rock_n_roll.apps.RockNRollConfig' 那么我必须在INSTALLED_APPS 中提及default_app_config = 'rock_n_roll.apps.RockNRollConfig'
这是放置您的application configuration 的推荐位置。此功能自 1.7 起就已存在,但为了促进其使用并简化配置,apps.py 文件已添加到默认应用程序模板中。
【讨论】:
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'
【讨论】: