Django에서 페이지 이동 없이 만들 수 있는 방법이 Mixin Class View 를 사용하는 방법이다.
Todo 앱을 예를 들면 위에 입력받아서 등록하는 부분은 CreateView를 입력받아야하고
ToDo list들은 ListView로 보여줘야한다.
Generic View들은 일종의 잘 사용하는 기능을 따로 만든 뒤에 Mixin Class로 구현하고 나서
이를 이름별로 구현했다는 점을 알 수 있다.
ListView와 CreateView를 비교하면 CreateView가 더 복잡한데 그 이유는 Form 처리를 위해서이다.
코딩을 할때는 (mixin, main) 이런식으로 적어준다.
다중 상속을 받을때는 좀 더 복잡한 CreateView를 메인으로 두는 것을 추천한다.
class TodoMixin(ListView, CreateView):
...
ListView에서 get_context_data를 보여주는 부분은 MultipleObjectMixin에 있다.
CreateView에 없는 object_list 부분을 넣어준다.
핵심적인 부분은 object_list를 넣어줘야한다. 이건 코드를 까보면서 알아야하고 공식문서를 참조하면서 알아야한다.
어떤 클래스를 상속받냐에따라 다르지만 흐름은 이런식이다.
(MutipleObjectMixin, CreateView)
대부분의 기능을 CreateView에서 처리를 받고, Createview에 없는 object_list 등은 MutipleObjectMixin에서 가져온다.