들어가며
에러가 발생하면서 여러 문장을 출력하지만 가장 마지막 핵심 문장은 다음과 같았습니다. ImportError: Module ‘comments.apps’ does not contain a ‘CommentConfig’ class. Choices are: ‘CommentsConfig’. 장고 ImportError 는 언제 발생하는 걸까요
장고 ImportError 오류 해결
새로운 app을 추가하기 위해서 python manage.py startapp posts
명령어를 입력하고 일련의 작업을 맞춘 뒤 나온 에러였습니다.
해당 error는 settings.py에서 INSTALLED_APPS 설정을 잘못해서 나온 것 입니다.
저는 comments
app을 만들었기에 INSTALLED_APPS
리스트에 ‘comments.apps.CommentsConfig
‘,을 입력해줘야 했는데 중간에 s를 빼먹고 comments.apps.CommentConfig
을 입력해서 나온 오류였습니다…
사실 애초에 app을 추가할 때 'posts.apps.PostsConfig'
같이 작성하지 않고 post
와 같이 app 이름만 작성해도 INSTALLED_APPS에서 인식하기 때문에 아래와 같이 작성하지 않고 app 이름만 추가하는 게 더 좋은 것 같습니다.
# Application definition
CUSTOM_APPS = [
'posts.apps.PostsConfig',
'common.apps.CommonConfig',
'comments.apps.CommentsConfig',
]
# 기존에 있던 INSTALLED_APPS를 SYSTEM_APPS로 변경
# Django는 INSTALLED_APPS만 인지하기 때문에 만드는 새로 만들어서 붙임
SYSTEM_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
INSTALLED_APPS = SYSTEM_APPS + CUSTOM_APPS
마치며
새로운 app을 추가하는 과정은 수동으로 진행되다 보니 오류가 많이 생기는 것 같습니다.
다음부터는 ImportError가 나오더라도 당황하지 않을 것 같습니다.
물론 애초에 오타부터 근절해야겠지만요…ㅎ