我没有看到这个问题的答案,这真的让我很困扰,因为我已经看到了两者都被使用过。
在此示例中,“ 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个问题
答案 0 :(得分:4)
要配置应用程序,请子类化AppConfig并将虚线路径放入该子类的INSTALLED_APPS中。
和
如果没有default_app_config,则Django使用基本的AppConfig类
如果您需要添加其他应用程序配置(例如,导入Signals),可以在应用程序配置中添加,然后将其包含在INSTALLED_APPS
中。 否则,您只能在INSTALLED_APPS
所以回答您的问题:
是否在“ myapp”冗余之后添加“ apps.MyappConfig”?
否
如果有什么重要性,那是什么?
是的,添加额外的配置
答案 1 :(得分:1)
- 是否要在“ myapp”冗余之后添加“ apps.MyappConfig”?
通常是,但并非总是。如果您自己没有在AppConfig
中指定INSTALLED_APP
,那么Django将在模块中寻找default_app_config
变量,如文档中所指定:
当
INSTALLED_APPS
包含应用程序模块的虚线路径时,Django 检查该模块中的default_app_config
变量。
例如,在django.contrib.sessions
module [GitHub]中,我们看到:
default_app_config = 'django.contrib.sessions.apps.SessionsConfig'
但是,可以在一个模块中定义多个AppConfig
,每个都可以轻而易举地改变应用程序的行为。参见下一部分:
AppConfig
[Django-doc]是应用程序中的类,其中包含有关应用程序的元数据。它包含例如应用程序的名称,标签,路径等。此外,您可以覆盖.ready()
[Django-doc]之类的方法。如果加载了模型,则将调用此方法,该方法通常用于执行一些管理任务或在Django启动时加载信号。
我们可以制作多个AppConfig
,例如,一个用于开发,一个用于生产,一个用于测试。但这并不经常发生。