AttributeError: module ' ' has no attribute ' ' 오류가 일어나는 원인으로는 경험적으로 보건데 3가지 이유로 해당 오류가 일어나게 되었다.
1. import 모듈과 같은 이름의 .py 파일이 존재할 시
2. 오타로 인하여 import 하려는 모듈명 혹은 호출하려는 함수명을 잘 못 입력한 경우
3. Django로 웹 개발시 urls.py 와 views.py가 연결 되지 않아서 오류가 일어나는 경우
첫 번째와 두 번째 원인으로 인한 해답은 구글에서 검색하면 금방 나오므로 내가 겪은 희귀한? 오류인 세번째 오류를 다뤄보기로 한다.
3. Django로 웹 개발시 urls.py 와 views.py가 연결 되지 않아서 오류가 일어나는 경우
urls.py에서 views.py의 category_page를 호출하라는 코드가 정상적으로 입력되어있다. 마찬가지로 views.py에 category_page() 함수가 오타 없이 제대로 입력되어 있다. 그럼에도 불구하고 AttributeError: module 'blog.views ' has no attribute 'category_page ' 오류를 내뱉는데 이는 category_page() 함수를 인식하지 못했기 때문이다. 어째서 인식하지 못했을까?
위의 스크린샷을 보면 def category_page() 함수가 class PostList(ListView): 클래스에 속해 있는 것을 볼 수있다. 속해 있다 하더라도 엄연히 존재하는 함수를 인식하지 못 하는걸 보면 클래스에 속한 함수는 별도의 추가 코드를 입력하지 않는한인식하지 못 하는 모양이다.
urls.py의 views.category_page 코드가 제대로 작동 할 수 있도록 views.py를 수정한다. 기존에 class에 속해 있느라 def가 들여쓰기가 되어있는데 아래의 스크린샷과 같이 다시 내여쓰기를 하여 class에서 벗어난다.
'Error Overflow' 카테고리의 다른 글
ImportError: cannot import name 'url' from 'django.conf.urls' (0) | 2022.08.25 |
---|---|
AssertionError: 404 != 200 (0) | 2022.08.08 |
django.template.exceptions.TemplateSyntaxError: Unclosed tag on line Looking for one of empty, endfor (0) | 2022.08.04 |
const char * 형식의 값을 사용하여 char * 형식의 엔터티를 초기화할 수 없습니다. (해결법, 준수 모드의 기능과 목적) (0) | 2022.06.01 |
Error code: 404 (0) | 2022.01.29 |