Django:INSTALLED_APPS是否为“ .apps.AppConfig”冗余?

问题描述 投票:0回答:2

我没有看到这个问题的答案,这真的让我很困扰,因为我已经看到了两者都被使用过。

在此示例中,“ myapp”是已创建的应用。

我一直看到用户在INSTALLED_APPS列表中像这样设置他们的应用程序:

INSTALLED_APPS = [
    'myapp',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

代替

INSTALLED_APPS = [
    'myapp.apps.MyappConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

所以我有2个问题

  1. 是否在“ myapp”冗余之后添加“ apps.MyappConfig”?
  2. 如果有什么重要性,那是什么?
python django django-settings
2个回答
0
投票
  1. 是否在“ myapp”冗余之后添加“ apps.MyappConfig”?

通常是,但是并非总是。如果您自己没有在AppConfig中指定INSTALLED_APP,那么Django将在模块中寻找default_app_config变量,如文档中所指定:

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

例如,在django.contrib.sessions module [GitHub]中,我们看到:

django.contrib.sessions

但是,可以在一个模块中定义多个default_app_config = 'django.contrib.sessions.apps.SessionsConfig',每个AppConfig都会稍稍更改应用程序的行为。参见下一部分:

  1. 如果有什么重要性,那是什么?

AppConfig [Django-doc]是您的应用程序中的一个类,其中包含有关该应用程序的元数据。它包含例如应用程序的名称,标签,路径等。此外,您可以覆盖AppConfig之类的方法。如果加载了模型,则将调用此方法,该方法通常用于执行一些管理任务或在Django启动时加载信号。

我们可以制作多个.ready() [Django-doc],例如一个用于开发,一个用于生产以及一个用于测试。但这并不经常发生。


0
投票

来自.ready()

要配置应用程序,请子类化AppConfig并将虚线路径放入该子类的INSTALLED_APPS中。

如果没有default_app_config,则Django使用AppConfig基类

如果您需要添加其他应用程序配置(例如,导入Signals,则可以在应用程序配置中添加],然后需要将其包含在AppConfig中。 否则,您只能在Django's docs中包含您的应用程序

所以回答您的问题:

是否在“ myapp”冗余之后添加“ apps.MyappConfig”?

如果有什么重要性,那是什么?

是,添加额外的配置

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.