Django Web Framework/Django CBV

class view 개발을 하기전 중급 학습 "이것을 초급? 입문? 용이라고?"

bluebamus 2021. 6. 15.

나는 내가 이해가 되었다고 생각되지 않으면 너무 찜찜한 기분으로 일이 잘 안된다.

그냥 외면하고 써먹고 다신 생각 말자라고 덮거나

일단 이해가 될때까지 판다.

 

모든걸 다 알수는 없으니깐, 문제는 만족할때까지는 일단 파보는 경우가 대부분인데

이렇게 파다보면 무엇을 위해 어떤 수준을 학습하기 위해 파던건지 좌표 자체를 잃는 경우가 허다하다.

 

FBV 프로젝트를 마무리 하고, CBV 프로젝트를 시작하면서 fastcampus 자료를 다시 훓어봤다.

 

나의 경우, 새로운걸 학습할 때 기본적인 책자나, 학습 과정을 진행한다.

그리고 샘플 프로젝트를 찾는다.

코드를 분석하는게 정말 직관적이고 빨리 이해가 된다.

이번 Django 학습의 경우, fastcampus 학습을 먼저 진행했다.

 

사실 크나큰 기대를 했는데, 만족을 한 부분도 컸지만 실망한 부분도 컸다.

 

Django에 대해서 기본이라 할 수 있는 것들을 전반적으로 다루지 않는다.

즉 FBV, CBV의 프로젝트를 진행하면 구현에 필요한 것들을 학습하게 유도하는데

당시 나온 다른 학습 과정처럼 왜 써야하는지에 대한 세부 설명 없이 일단 따라해보라는 식의 설명이 기본이다.

 

특히 FBV나 CBV 구현시 실무에서 적극 써먹어야 하는 라이브러리를 한데 추려서 설명하고 예시를 보여주면

정말 알뜰살뜰 써먹겠는데 없다. 알아서 Doc 문서나 구글링해서 이해해야한다.

 

그리고 CBV의 경우, 사람들이 Django가 쉽다 쉽다 하는데 절대! 전혀 아니다.

View만 하더라도 제대로 사용하려면 믹스인과 데코레이션 그리고 라이브러리를 기본 요구되는 수준들은 알고 있어야 하고 이뿐만 아니라 Class의 동작에 따라 호출되는 상속 Class의 동작들을 이해해야 한다.

 

예를 들어 아직도 대충 이해만 하고 있는 reverse_lazy의 경우 왜 사용해야 하는지를 이해하려면

class를 Import하면서 동작되는 시점과 관련있는데, stackoverflow 등으로 궁금한걸 찾다보면

 

정말 많은 글에서 해당 함수를 사용하는것을 볼 수 있지만, 

입문, 초급 개발자 혹은 중급이라 해도 개발언어나 프레임워크 특성에 따라 낯설게 느낄 사람들이 많다.

 

Class View의 경우 일반 View 제너릭View가 있는데 

모든 경우에 대해 구현하는 방법을 제공하지 않는다.

 

때문에, 나의 경우는 udemy와 인프런에서 유료 강좌를 엄청 많이 질렀다.

한 200은 넘는듯하다. 그냥 꽂혀서 술먹은 김에 지르고 다음날 후회했다.

취소가 가능하지만, 운명이라 생각하고 일단 Keep해뒀다.

 

인프런과 udemy의 큰 장점은 댓글로 질문을 해볼 수 있다.

 

항상 내가 가지는 궁금증들은 쉽게 해결되는 것들이 아니었기 때문에 각 다른 강사들에게 질문을 할 수 있는

티켓을 샀다 생각하면 나쁘지 않다고 생각했다.

 

쓸 이야기가 많지만, 앞으로 간간히 다룰 것이기에

이러한 이유로 근 2일간 기본이 되는 부분들만 django docs에서 학습하기로 했다

 

해당 리스트는 다음과 같다.

 

1. Class-based views

https://docs.djangoproject.com/ko/3.2/topics/class-based-views/

 

Class-based views | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

2.  클래스 기반의 뷰 소개

https://docs.djangoproject.com/ko/3.2/topics/class-based-views/intro/

 

클래스 기반의 뷰 소개 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

3. 내장된(Built-in) 클래스 기반의 제너릭 뷰

https://docs.djangoproject.com/ko/3.2/topics/class-based-views/generic-display/

 

내장된(Built-in) 클래스 기반의 제너릭 뷰 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

4. Form handling with class-based views

https://docs.djangoproject.com/ko/3.2/topics/class-based-views/generic-editing/

 

Form handling with class-based views | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

5. Using mixins with class-based views

https://docs.djangoproject.com/ko/3.2/topics/class-based-views/mixins/

 

Using mixins with class-based views | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

6. Built-in class-based views API

https://docs.djangoproject.com/ko/3.2/ref/class-based-views/

 

Built-in class-based views API | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Overview Download Documentation News Community Code Issues About ♥ Donate

docs.djangoproject.com

 

아직 안본 것들

 

1. Django Vanilla Views

http://django-vanilla-views.org/

 

Django Vanilla Views - Beautifully simple class based views

Django Vanilla Views Beautifully simple class-based views. View --+------------------------- RedirectView | +-- GenericView -------+-- TemplateView | | | +-- FormView | +-- GenericModelView --+-- ListView | +-- DetailView | +-- CreateView | +-- UpdateView

django-vanilla-views.org

 

2. django-extra-views

https://django-extra-views.readthedocs.io/en/latest/

 

django-extra-views — Django Extra Views 0.13.0 documentation

Docs » django-extra-views Edit on GitHub © Copyright 2013, Andrew Ingram Revision 53482c24. Built with Sphinx using a theme provided by Read the Docs.

django-extra-views.readthedocs.io

 

3. Classy Class-Based Views

http://ccbv.co.uk/? 

 

Django Class-Based-View Inspector -- Classy CBV

What are class-based views anyway? Django's class-based generic views provide abstract classes implementing common web development tasks. These are very powerful, and heavily-utilise Python's object orientation and multiple inheritance in order to be exten

ccbv.co.uk

 

일단, 기본 구조를 잘 모른다면, 상속과 오버라이딩 그리고 Class의 기본적인 동작을 잘 모른다면

절대 술술 읽혀지지 않는다.

 

이 문서를 입문, 초보용이라고 써놓은 블로그 작성자들은 어떤 능력자인지 궁금하다.

하지만, 짧은 문서인 반면서 많이 생각하고 배울게 많다.

 

5번 믹스인 부분부터 정말 알아먹을 수 없는 것들이 많아서 

"아.. 지금 내 수준은 일단 기본을 좀 더 파보고 다시 와서 봐야겠다" 생각했다.

 

최종 목표는 다시 처음부터 보면서 링크된 class와 함수 혹은 변수들을 다 살펴보고 한번씩 구현해 보는 것이고

6번에 리스트업 된 부분들에 있어서 전부 이해를 하는것이 될거다

 

그리고 마지막으로 확장 개념인 vanilla와 extra view의 경우들도 직접 구현해서 사용해보면 

이 페이지에서 내가 무척 아쉬워하는 이해 부족에 대한 한계를 극복할 수 있을것 같다.

 

해당 문서에 잠시 언급되었지만, json 응답 excel, pdf 스트리밍 등에 대해서도 구현을 해보는것도 포함된다.

Rest-API가 아닌, javascript 혹은 jquery의 ajax에 대한 응답을 기준으로 구현해 보면

사실 Class로 구현할 수 있는 전반적인 기술 스택은 다질 수 있다고 생각이 든다.

댓글