Django:INSTALLED_APPS 是“.apps.AppConfig” 多余的吗?
Django: INSTALLED_APPS is ".apps.AppConfig" redundant?
我没有看到这个问题的答案版本,这一直困扰着我,因为我看到两者都被使用了。
在这个例子中 "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 个问题
- 在 "myapp" 之后添加 "apps.MyappConfig" 是多余的吗?
- 如果它有一些重要性,它是什么?
- Is adding the "apps.MyappConfig" after "myapp" redundant?
通常是,但不总是。如果你自己没有在INSTALLED_APP
中指定AppConfig
,那么Django会在模块中寻找default_app_config
变量,正如文档中指定的那样:
When INSTALLED_APPS
contains the dotted path to an application module, Django checks for a default_app_config
variable in that module.
例如在django.contrib.sessions
module [GitHub]中,我们看到:
<b>default_app_config</b> = 'django.contrib.sessions.apps.SessionsConfig'
然而,可以在一个模块中定义多个 AppConfig
,每个都会稍微改变应用程序的行为。请参阅下一节:
- 如果它有一些重要性,它是什么?
一个AppConfig
[Django-doc] is a class in your application that contains meta-data about the application. It contains for example the name of the app, the label, the path, et. Furthermore you can override methods like .ready()
[Django-doc]。如果加载模型,将调用此方法,通常用于执行一些管理任务,或在 Django 启动时加载信号。
我们可以制作多个 AppConfig
,例如一个用于开发,一个用于生产,一个用于测试。但这种情况并不经常发生。
To configure an application, subclass AppConfig and put the dotted path to that subclass in INSTALLED_APPS.
和
If there is no default_app_config, Django uses the base AppConfig class
如果您需要添加额外的应用配置(例如导入信号),您可以在您的应用配置中执行此操作,然后需要将其包含在您的 INSTALLED_APPS
. 否则,您只能在 INSTALLED_APPS
中包含您的应用
所以回答你的问题:
Is adding the "apps.MyappConfig" after "myapp" redundant?
没有
If there is some importance to it, what is it?
是,添加额外配置
我没有看到这个问题的答案版本,这一直困扰着我,因为我看到两者都被使用了。
在这个例子中 "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 个问题
- 在 "myapp" 之后添加 "apps.MyappConfig" 是多余的吗?
- 如果它有一些重要性,它是什么?
- Is adding the "apps.MyappConfig" after "myapp" redundant?
通常是,但不总是。如果你自己没有在INSTALLED_APP
中指定AppConfig
,那么Django会在模块中寻找default_app_config
变量,正如文档中指定的那样:
When
INSTALLED_APPS
contains the dotted path to an application module, Django checks for adefault_app_config
variable in that module.
例如在django.contrib.sessions
module [GitHub]中,我们看到:
<b>default_app_config</b> = 'django.contrib.sessions.apps.SessionsConfig'
然而,可以在一个模块中定义多个 AppConfig
,每个都会稍微改变应用程序的行为。请参阅下一节:
- 如果它有一些重要性,它是什么?
一个AppConfig
[Django-doc] is a class in your application that contains meta-data about the application. It contains for example the name of the app, the label, the path, et. Furthermore you can override methods like .ready()
[Django-doc]。如果加载模型,将调用此方法,通常用于执行一些管理任务,或在 Django 启动时加载信号。
我们可以制作多个 AppConfig
,例如一个用于开发,一个用于生产,一个用于测试。但这种情况并不经常发生。
To configure an application, subclass AppConfig and put the dotted path to that subclass in INSTALLED_APPS.
和
If there is no default_app_config, Django uses the base AppConfig class
如果您需要添加额外的应用配置(例如导入信号),您可以在您的应用配置中执行此操作,然后需要将其包含在您的 INSTALLED_APPS
. 否则,您只能在 INSTALLED_APPS
所以回答你的问题:
Is adding the "apps.MyappConfig" after "myapp" redundant?
没有
If there is some importance to it, what is it?
是,添加额外配置