본문 바로가기

Django

django FBV(함수형 뷰)에 대해서

django에서는 view를 처리할때 두가지 방법으로 처리할 수 있다.

FBV(함수형 뷰), CBV(클래스형 뷰)로 처리할 수 있는데, 이번 포스팅은 FBV에 대해서만 다뤄볼 예정이다.

FBV(함수형 뷰)

FBV는 Function Base View를 뜻하고 있으며, 함수를 사용하고 있는 뷰이다.

사용 방법에 대해서는 url부터 알아 볼 수 있다.

urls.py

urlpatterns = [
      path('', views.index, name='index'),
]

view를 import해서 함수를 선언하는 형식으로 쓰여진다.

views.py

from rest_framework.response import Response
from rest_framework.decorators import api_view

@api_view(['POST', 'GET'])
def index(request):
      if request.method == 'POST':
          return Response()
    elif request.method == 'GET':
          return Response()

FBV를 사용하기 위해서는 @api_view()를 데코레이터로 사용해야한다.

@api_view()가 뭐냐? 일단 함수형 뷰를 기반으로 사용할때 사용하는 장식자이며 안에 리스트 타입으로 요청 메서드를 명시해야한다.

그렇게 되면 해당 뷰로 요청이 들어왔을때 request.method로 구분하여 원하는 method type으로 로직이 실행된다.

함수 안에서 각 HTTP METHOD는 request.method에서 받아온 내용으로 쓰이는데 위의 조건 처럼 각각 분리 해서 사용할 수 있다.

단점이라고 하면 다른 부분도 있겠지만 내 생각엔 코드를 확장하며 사용하기 어렵고 확장하더라도 잘 정리하지 않으면 가독성에 안좋을 것 같다.