[강의 공부] 12. FBV, CBV 간단 개념

단간단간·2024년 4월 20일
0
post-thumbnail

⎷ FBV vs CBV

django는 두 가지 유형의 뷰를 사용하여 웹 애플리케이션을 개발한다.
1. FBV(=Function Based Views): 함수 기반 뷰
2. CBV(=Class Based Views): 클래스 기반 뷰

Function Based Views, FBV

  • 정의:
    FBV는 가장 기본적인 뷰 작성 방식이다. 특정 URL에 대한 요청을 처리하는 함수를 직접 작성한다. 각 함수는 요청을 받고 처리 후에 응답을 반환한다.

  • 장점:

    • 간단하고 직관적이다. 간단한 로직에서 쉽게 사용할 수 있다.
    • 데코레이터를 통한 확장이 용이하며, 명확한 로직 흐름을 코드 상에서 쉽게 확인할 수 있다.
  • 단점:

    • 중복 코드 발생이 많아진다. 비슷한 형태의 뷰가 여러 개 필요할 때 각각 별도로 작성해야 한다.
    • 뷰의 기능이 복잡해질 경우, 함수가 길어지고 복잡해질 수 있다.
  • 예시:

    def hello_world(request):
        if request.method == "POST":
            text = request.POST.get("hello_world_input")
    
            # DB 저장
            new_hello_world = HelloWorld()
            new_hello_world.text = text
            new_hello_world.save()
    
            return HttpResponseRedirect(reverse('accountapp:hello_world'))
        else:
            hello_world_list = HelloWorld.objects.all()
            return render(request, 'accountapp/hello_world.html', context={'hello_world_list': hello_world_list})

Class Based Views, CBV

  • 정의:
    CBV는 django의 클래스를 활용하여 뷰를 정의하는 방식이다. 뷰 관련 메서드(get, post 등)를 클래스의 메서드로 정의한다.
  • 장점:
    • 코드 재사용성이 높다. 상속을 통해 기본 클래스의 기능을 확장하거나 변경할 수 있어서 중복을 줄일 수 있다.
    • 구조화된 패턴을 적용하여 로직이 복잡한 대규모 애플리케이션의 개발 및 유지보수가 FBV에 비해 용이하다.
  • 단점:
    • 초기 러닝 커브가 좀 있는 편이다. 클래스의 구조와 상속 방식을 이해해야 하므로, FBV에 비해서 진입장벽이 있는 편이다.
    • FBV에 비해 유연성이 떨어질 수 있다. django에서 제공하는 기본 클래스 외의 커스텀 기능을 추가할 때 복잡해질 수 있다.
  • (참고) CBV 종류:
    • 기본 뷰(Base Views)
      • View: 모든 클래스 기반 뷰의 기본이 되는 클래스. 다른 모든 뷰는 이 클래스를 상속받아 확장함
    • 디스플레이 뷰(Display Views)
      • TemplateView: 템플릿 파일을 렌더링하여 반환. 주로 정적 페이지 표시할 때 사용됨
      • ListView: 데이터베이스에서 모델의 목록을 가져와 템플릿에 전달함. 페이징 처리 같은 목록 관련 기능을 쉽게 구현 가능
      • DetailView: 특정 객체의 상세 정보 표시. 모델의 특정 인스턴스에 대한 정보를 템플릿에 전달함
    • 수정 뷰(Editing Views)
      • CreateView: 폼을 통해 새로운 데이터를 입력받아 모델 인스턴스를 생성함
      • UpdateView: 기존 모델 인스턴스를 수정할 수 있는 폼을 제공함
      • DeleteView: 특정 모델 인스턴스를 삭제함
    • 복합 뷰(Composite Views)
      • FormView: 특정 폼을 처리하는 일반적인 뷰. 유효성 검사 후 지정된 로직을 실행함
profile
simple is best

0개의 댓글