0. 개요
Django에서 뷰(View)는 웹 요청을 받고 응답을 반환하는 기능을 담당하는데 뷰는 크게 두 가지 방식으로 구현
- 함수 기만 뷰(Function_Based Views,FBV)
- 클래스 기반 뷰(Class-Based Views, CBV)
둘의 차이를 알아보자
1. FBV
1) FBV란?
- 간단하게 하나의 함수로 요청을 처리하는 방식
2) 장점
- 간결성: 작은 애플리케이션 또는 단순한 긴으을 구현할 때 코드가 간결
- 직관성: 함수의 시작부터 끝까지 코드의 흐름을 쉽게 파악
3) 예시
from django.shortcuts import render
def my_view(request):
return render(request, 'my_template.html', {'additional_data': 'This is additional data'})
from django.urls import path
from .views import my_view
urlpatterns = [
path('example/', my_view),
]
2. CBV
1) CBV란?
- 객체 지향 프로그래밍의 원칙을 사용하여 뷰를 구현하는 방식
- 뷰의 기능을 클래스로 정의, 필요한 메서드를 오버라이딩하거나 확장
2) 장점
- 재사용성과 확장성: 공통적인 기능을 가진 기본 클래스를 만들고, 일을 상속받아 다양한 뷰를 쉽게 구현
- 유지보수 용이: 함수보다 구조화된 클래스를 사용함으써 코드의 가독성과 관리가 용이
- 믹스인 활용: 믹스인 클래스를 사용하여 다양한 기능을 조합
3) 예시
from django.views.generic import TemplateView
class MyView(TemplateView):
template_name = "my_template.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['additional_data'] = 'This is additional data'
return context
from django.urls import path
from .views import MyView
urlpatterns = [
path('example/', MyView.as_view()),
]
- as_view 메서드를 사용하여 클래스 기반 뷰를 호출,
- get, post 등을 호출
3. 결론
- 프로젝트에 요구 사항과 개발자의 선호에 따라 적절한 방식을 선택하는 것이 좋다
무엇이 더 좋다고 하기엔 어려운 것 같다.
'IT > Python' 카테고리의 다른 글
Django, 탬플릿 태그를 활용하여 DB에 등록된 데이터 출력 및 페이징네이션 (1) | 2024.04.07 |
---|---|
Django, forms를 활용하여 사용자로부터 데이터 수집하기ModelForm (0) | 2024.04.07 |
Django에서 URLConf를 사용하여 Projcet와 App의 URL을 연결 (0) | 2024.04.07 |
Django, model.py를 구현하고 DB에 변경사항 적용하기 (0) | 2024.04.07 |
Django, Django 프로젝트의 환경 및 구성 설정을 담고 있는 중요한 파일 settings.py (0) | 2024.04.07 |