我有一个Django项目,其中有两个应用程序,比如cheese和mouse_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',
...
]