Django INSTALLED_APPS无法正确获得带有下划线的应用程序 - 为什么?



我有一个Django项目,其中有两个应用程序,比如cheesemouse_and_cat。在将两者添加到INSTALLED_APPS时,我首先在那里编写

INSTALLED_APPS = [
'cheese.apps.CheeseConfig',
'mouse_and_cat.apps.Mouse_and_catConfig',
]

但它只导致错误">mouse_and_cat.app不是一个包"。我试图将其更改为"use_and_cat.apps.MouseandcatConfig",但没有帮助——不知怎么的,我认为会是这样。我在谷歌上搜索,保留了第一条"奶酪线",但第二条改为只有'mouse_and_cat'——现在它起作用了。但是下划线是什么情况?当一个应用程序以这种方式命名时,Django为什么表现得如此奇怪?我这里缺什么了吗?现在我知道下划线不是首选的命名模式,所以我会避免它,但它仍然困扰着我,因为我相信这个错误在某种程度上更像是我的错,而不是Django的错。

它对下划线没有任何作用,它应该是应用程序配置class的虚线路径。此配置类通常位于/app_name/apps.py文件中,此处的app_name为mouse_and_cat

如果您想让它发挥作用,您可以将类
的app_name(mouse_and_cat)或虚线路径放在INSTALLED_APPS列表中。

来自Django文档:https://docs.djangoproject.com/en/3.0/ref/applications/#configuring-应用

我尝试创建我自己的AppConfig子类,正如上面链接中所解释的那样,它对我有效

mouse_and_cat/apps.py:

from django.apps import AppConfig
class Mouse_and_Cat_Config(AppConfig):
name = 'mouse_and_cat' # app_name to be configured

settings.py:

INSTALLED_APPS = [
...
'mouse_and_cat.apps.Mouse_and_Cat_Config',
...
]

最新更新