基于 Django1.10 文档的深入学习(7)—— Configuring applications

Configuring applications配置应用程序

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

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

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

如果没有default_app_configDjango使用基础AppConfig类。

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

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

对于应用程序作者

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

# rock_n_roll/apps.py

from django.apps import AppConfig

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

您可以使您的应用程序默认加载此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中指定app config类。

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

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

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

对于应用程序用户

如果您在一个名为选集的项目中使用“Rock ’n’ roll”,但您希望将其显示为“Jazz Manouche”,则可以提供自己的配置:

# anthology/apps.py

from rock_n_roll.apps import RockNRollConfig

class JazzManoucheConfig(RockNRollConfig):
    verbose_name = "Jazz Manouche"

# anthology/settings.py

INSTALLED_APPS = [
    'anthology.apps.JazzManoucheConfig',
    # ...
]

再次,在名为apps的子模块中定义项目特定的配置类是一个约定,而不是一个要求。

这里写图片描述

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值