2023. 3. 13. 09:21ㆍ개발/토막난 상식
장고의 뷰는 함수기반 뷰(FBV)와 클래스 기반 뷰(CBV)가 있다.
펑션 vs 클라쓰
함수 기반 뷰
- View 구현의 기본이며 이것을 알아야 응용이 가능하다.
- 함수 기반 뷰의 공통기능은 장식자 문법으로 적용
클래스 기반 뷰
- 짧은 코드로 많은 기능을 구현
- 클래스 기반 뷰의 공통 기능들은 상속 문법으로 적용
장고에서는 Base View를 통해 기본적인 클래스 기반 뷰를 지원한다. 그리고 웹 개발시 반복적으로 개발해야할 요소를 줄여주는 Generic display views를 지원한다. 이는 Base View와 기타 다양한 믹스인을 상속받아 구현되었다.
API개발에 유용한 DRF(Django Rest Framework)도 CBV(Class Based View)의 철학을 따르기 때문에 CBV를 이해하는 것이 좋다.
우리는 앞서 함수(function)란 하나의 특정 작업을 수행하기 위해 독립적으로 설계된 프로그램 코드라고 배웠습니다.
이때 함수의 호출은 특정 작업만을 수행할 뿐 그 결괏값을 계속 사용하기 위해서는 반드시 어딘가에 따로 저장해야만 합니다.
즉, 함수를 포함한 프로그램 코드의 일부를 재사용하기 위해서는 해당 함수뿐만 아니라 데이터가 저장되는 변수까지도 한꺼번에 관리하는 것이 편할 것입니다.
이처럼 함수뿐만 아니라 관련된 변수까지도 한꺼번에 묶어서 관리하고 재사용할 수 있게 해주는 것이 바로 클래스(class)입니
클래스(class)와 객체(object)는 우리가 거리에서 흔히 볼 수 있는 붕어빵으로 간단히 비유하여 이해할 수 있습니다.
붕어빵을 계속해서 찍어낼 수 있는 틀을 클래스(class)라고 한다면, 이러한 붕어빵 틀에서 찍혀 나온 맛있는 붕어빵 하나하나를 객체(object)라고 이해할 수 있는 것입니다. 즉, 하나의 클래스로부터 무수히 많은 객체를 생성할 수 있는 것입니다.
이와 같은 객체를 사용하여 데이터를 표현하는 프로그래밍 기법을 객체 지향 프로그래밍(Object-Oriented Programming, OOP)이라고 합니다.
클래스 함수는 def 대신 class로 정의하는 객체 생성 함수로 이를 호출하면 내부에 정의된 대로의 객체를 리턴한다는 특징이 있지만 호출시 내부 코드를 실행한다는 점에서는일반 파이썬 함수와 전혀 다를 바가 없다.
- 우리는 대부분의 경우 클래스 기반 뷰를 선호한다.
- 클래스 기반 뷰로 구현했을 경우 특별히 더 복잡해지는 경우나 커스텀 에러 뷰들에 대해서만 함수 기반 뷰를 이용하고 있다.
어떤 개발자들은 대부분의 뷰를 함수 기반 뷰로 처리한다. 그리고 클래스 기반 뷰는 서브 클래스가 필요한 경우에 대해 제한적으로 이용하기도 한다. 이 또한 문제 될 것이 없다
'개발 > 토막난 상식' 카테고리의 다른 글
객체지향 프로그래밍(OOP) (0) | 2023.03.13 |
---|---|
Django - Reverse for '' not found. '' is not a valid view function or pattern name (0) | 2023.03.13 |
cleaned_data이란 (0) | 2023.03.09 |
장고에서 CSRF (0) | 2023.03.09 |
$.ajaxSetup() (0) | 2023.03.09 |