python - 在 Django 3.2 中我收到此错误 : app ImportError: Module 'apps.articles' does not contain a 'ArticlesConfig' class

标签 python django

研究序言:我尝试过什么?

我是 Django 新手,在尝试遵循最佳实践的同时不断学习。我正在学习《Two Scoops of Django 3.x》。对结构的任何疑问都应直接向作者提出。

我希望这个问题足够扎实,不会在前几分钟内被删除,因为我真的陷入了这个问题。如果要删除此问题,我将不胜感激有关如何改进我将来提问方式的指导。我已阅读如何提出好问题博客,并希望我能遵循此指南。如果我确实错过了某些内容,请不仅仅提供博客链接。

  • 请注意,我已经研究过这个问题,最接近的是 Django 1.7 的问答:Django 1.7 app config ImportError: No module named appname.apps :这个解决方案对我来说不起作用(尽管它确实给了我一个很好的尝试途径)。有趣的是,他们选择了与我 5 年前完全相同的应用程序结构。请注意,在配置中提供项目名称并没有像OP那样解决这个问题。
其他未产生所需解决方案的问题:
其他不直接相关的问题(至少据我有限的经验所知):

问题的相关信息

这是项目树:

Project tree for the Question

articles/__init__.py的内容:
default_app_config = 'LanesFlow.apps.articles.apps.ArticlesConfig'
articles/apps.py的内容:
from django.apps import AppConfig

class ArticlesConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'apps.articles'
class ArticlesConfig(AppConfig):

    default_auto_field = 'django.db.models.BigAutoField'
    name = 'LanesFlow.apps.articles'  # This was checked per the answer to the researched question
已安装应用程序 base.py (settings.py):
INSTALLED_APPS = [
    'apps.articles.ArticlesConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]
错误追溯:
    Watching for file changes with StatReloader
Exception in thread django-main-thread:
Traceback (most recent call last):
  File "C:\Users\Carewen\AppData\Local\Programs\Python\Python39\lib\threading.py", line 954, in _bootstrap_inner
    self.run()
  File "C:\Users\Carewen\AppData\Local\Programs\Python\Python39\lib\threading.py", line 892, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Users\Carewen\AppData\Local\Programs\Python\Python39\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\Carewen\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\commands\runserver.py", line 110, in inner_run
    autoreload.raise_last_exception()
  File "C:\Users\Carewen\AppData\Local\Programs\Python\Python39\lib\site-packages\django\utils\autoreload.py", line 87, in raise_last_exception
    raise _exception[1]
  File "C:\Users\Carewen\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 375, in execute
    autoreload.check_errors(django.setup)()
  File "C:\Users\Carewen\AppData\Local\Programs\Python\Python39\lib\site-packages\django\utils\autoreload.py", line 64, in wrapper
    fn(*args, **kwargs)
  File "C:\Users\Carewen\AppData\Local\Programs\Python\Python39\lib\site-packages\django\__init__.py", line 24, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "C:\Users\Carewen\AppData\Local\Programs\Python\Python39\lib\site-packages\django\apps\registry.py", line 91, in populate
    app_config = AppConfig.create(entry)
  File "C:\Users\Carewen\AppData\Local\Programs\Python\Python39\lib\site-packages\django\apps\config.py", line 221, in create
    raise ImportError(msg)
ImportError: Module 'apps.articles' does not contain a 'ArticlesConfig' class.

欢迎任何帮助。

编辑

我已再次恢复到上一个​​工作版本。我已经找到哪里出错了。当我尝试将 'articles.app.ArticleConfig' 添加到 INSTALLED_APPS 时事情出了问题。问题是,这让我更加困惑。我正在尝试添加模板。我遵循的过程是:

  • 在根目录中创建 templates 目录,以articles 作为子目录(遵循两勺中推荐的结构 - 其背后的逻辑是允许创建可用于所有应用程序的基本模板 - 这就是我想用这种方法来完成)。
  • 此时我得到 ImportError 。然而,apps.py文件确实联系了类 ArticlesConfig(AppConfig)

也在 base.py (settings.py):

TEMPLATES = [
{
    'BACKEND': 'django.template.backends.django.DjangoTemplates',
    'DIRS': [BASE_DIR / 'apps.templates'],  # Two scoops add. Was []
    'APP_DIRS': True,
    'OPTIONS': {
        'context_processors': [
            'django.template.context_processors.debug',
            'django.template.context_processors.request',
            'django.contrib.auth.context_processors.auth',
            'django.contrib.messages.context_processors.messages',
        ],
    },
},
]

我仍然很困惑。我对 Django 的缺乏经验在这里得到了充分体现。我不确定添加INSTALLED_APPS我做错了什么。我的直觉引导我探索 settings.py 的其他方面,看看我是否错误地指出了某人。

最佳答案

问题似乎与:

INSTALLED_APPS = [
    'apps.articles.ArticlesConfig',

应该是:'apps.articles.apps.ArticlesConfig',

此外,您的articles/apps.py 内容应该仅为:

from django.apps import AppConfig

class ArticlesConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'apps.articles'

关于python - 在 Django 3.2 中我收到此错误 : app ImportError: Module 'apps.articles' does not contain a 'ArticlesConfig' class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68306715/

相关文章:

python - 使用 Python 编程 Discord 机器人 - 如何使机器人将命令限制到特定服务器?

python - 根据 pandas DataFrame 中的列值有条件地替换多列

django - 如何显示外键字段的名称而不是其 ID?

python - Django 框架 : How to catch all occuring server errors centrally and trigger events on such errors

python - 在 django rest framework searchfilter 中禁用多重搜索

python - FastAPI + pytest 无法清理 Django ORM

python - 在 PyCharm 中使用 Vue.js 时出现 "Unidentified character <"错误

python - 如何获取 Pandas 系列中小数点后的最大位数

python - Matplotlib 无处不在地绘制未定义的图

python - 使用 Scrapy 通过电子邮件发送项目和日志