Class inheritance
, method overriding
기능이 가능한 generic view는 하위 클래스에서 오버라이딩이 쉽고 여러가지 어플리케이션에 다양하게 사용 되도록 설계 되었다는거 아시나유?
그런 측면에서 특히 generic view의 메소드들은 단위 기능으로 잘게 나누어 method의 응집도를 높이고, 템플릿 메소드의 design pattern을 적용해 개발자가 generic view의 처리 흐름을 쉽게 예상할 수 있도록 해요.
만약 generic view를 상속받아 하위 클래스형 view를 개발하는 경우, 개발하고자 하는 로직에 맞는 generic view의 처리흐름에 맞춰 설계하며, 그 과정에서 어느 메소드를 변경해야 할지, 즉, 어느 메소드를 오버라이딩해야 할지 결정하게 되요.
따라서 이런 과정에서는 generic view의 처리 흐름을 파악하는 것이 IMPORT!!
그래서 어쩌라고요?
ListView와 DetailView의 Flow를 한번 보조. 흐름에 몸을 맡겨~!
ListView 2개 이상의 객체에 대한 목록을 보여주는 View에요.
ListView Flow Table
DetailView는 객체 하나에 대한 상세 정보를 보여주기 위한 View에요.
DetailView Flow Table
대상 객체를 구현하기 위해 ListView
는 get_queryset()
메소드를 사용하는 반면 DetailView는 get_object() 메소드를 사용한다는점!!!!
그라고~ DetailView는 get_object() 메소드 내에서 get_queryset() 메소드를 호출한다는 점이 가!장~~! 큰 차이가 있겠습니당.
또또! 이 두 generic View에서 사용하는 메소드들이 이름은 동일해도 내부 로직은 다른 별개의 메소드라는 점도 주의~~하세요.