Error Overflow

Django로 웹 개발시 urls.py 와 views.py가 제대로 연결 되지 않아서 AttributeError: module ' ' has no attribute ' ' 오류가 일어나는 경우

Fullstacknology 2022. 8. 7. 03:43

 

  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() 함수를 인식하지 못했기 때문이다. 어째서 인식하지 못했을까?

urls.py

 

views.py

  위의 스크린샷을 보면 def category_page() 함수가 class PostList(ListView): 클래스에 속해 있는 것을 볼 수있다. 속해 있다 하더라도 엄연히 존재하는 함수를 인식하지 못 하는걸 보면 클래스에 속한 함수는 별도의 추가 코드를 입력하지 않는한인식하지 못 하는 모양이다.

 

  urls.py의 views.category_page 코드가 제대로 작동 할 수 있도록 views.py를 수정한다. 기존에 class에 속해 있느라 def가 들여쓰기가 되어있는데 아래의 스크린샷과 같이 다시 내여쓰기를 하여 class에서 벗어난다.