Django 1.9中apps.py的目的是什么?

Lau*_*Mat 128 django

我刚刚浏览了Django 1.9alpha发行说明,发现startapp管理命令现在添加了一个apps.py文件.

这个文件的目的是什么?该的startApp文档并没有提供更多的信息.

Rah*_*pta 129

apps.py文件目的:

创建此文件是为了帮助用户包含应用程序的任何应用程序配置.使用此选项,您可以配置应用程序的某些属性.

来自Application Configuration文档:

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

来自文档的示例:

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

rock_n_rollapp中,我们创建了一个RockNRollConfigAppConfig类.

#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"
Run Code Online (Sandbox Code Playgroud)

我们可以AppConfig通过default_app_configrock_n_roll/__init__.py文件中指定您的应用程序来默认加载此子类.

# rock_n_roll/__init__.py    
default_app_config = 'rock_n_roll.apps.RockNRollConfig'
Run Code Online (Sandbox Code Playgroud)

执行此操作将导致仅在包含RockNRollConfig时使用.这使我们可以使用功能而无需用户更新其设置.INSTALLED_APPS'rock_n_roll'AppConfigINSTALLED_APPS

  • 相同数量的赞成回答和问题.听起来很腥?你不觉得拉胡尔? (7认同)
  • 每个认为这是一个好Q的人也认为Rahul的回答是一个很好的答案.:-) (7认同)
  • `不需要我们的用户更新他们的 INSTALLED_APPS 设置。`:这是什么意思:基本上如果我不做 `default_app_config = 'rock_n_roll.apps.RockNRollConfig'` 那么我必须在 INSTALLED_APPS 中提到 `default_app_config = 'rock_n_roll.apps.RockNRollConfig '` (4认同)
  • 遗憾的是我没有得到你的答案 (2认同)

knb*_*nbk 15

建议您放置应用程序配置.此功能自1.7版以来一直在这里,但为了促进其使用并使配置更容易,该apps.py文件已添加到默认的应用程序模板中.