programing

클래스 기반 보기 VS 기능 기반 보기

muds 2023. 5. 11. 21:59
반응형

클래스 기반 보기 VS 기능 기반 보기

저는 django 앱을 만들 때 항상 FBV(Function Based Views)를 사용합니다. 왜냐하면 그것은 매우 다루기 쉽기 때문입니다.그러나 대부분의 개발자들은 CBV(Class Based Views)를 사용하고 복잡한 보기일 경우 FBV만 사용하는 것이 CBV로 구현하는 데 어려움이 있다고 말했습니다.

왜냐고요? CBV를 사용하는 것의 장점은 무엇인가요?

가장 중요한 장점은 상속입니다.대규모 프로젝트에서는 비슷한 뷰를 많이 사용할 수 있습니다.동일한 코드를 반복해서 쓰는 대신 기본 뷰에서 뷰를 상속받을 수 있습니다.

또한 django는 가장 일반적인 작업 중 일부를 수행하는 데 사용할 수 있는 일반 보기 클래스 모음과 함께 제공됩니다.예를 들어 DetailView 클래스는 모델 중 하나에서 단일 객체를 전달하고 템플릿으로 렌더링한 후 http 응답을 반환하는 데 사용됩니다.url conf에 직접 연결할 수 있습니다.

url(r'^author/(?P<pk>\d+)/$', DetailView.as_view(model=Author)),

또는 맞춤형 기능으로 확장할 수 있습니다.

class SpecialDetailView(DetailView):
    model = Author
    def get_context_data(self, *args, **kwargs):
        context = super(SpecialDetailView, self).get_context_data(*args, **kwargs)
        context['books'] = Book.objects.filter(popular=True)
        return context

이제 템플릿이 렌더링할 책 개체 모음을 전달합니다.

이를 시작하기에 좋은 장소는 문서를 잘 읽는 것입니다(장고 4.0+).

갱신하다

ccbv.co.uk 에는 이미 사용할 수 있는 클래스 기반 보기에 대한 포괄적이고 사용하기 쉬운 정보가 있습니다.

제가 DJanggo로 시작했을 때 저는 CBV를 사용하지 않았습니다. 왜냐하면 학습 곡선과 약간 복잡한 구조 때문입니다.2년이 지난 지금, 저는 FBV를 몇 군데에서만 사용하고 있습니다.코드는 정말 단순하고 단순하게 유지될 것이라고 확신합니다.

CBV와 함께 제공되는 다중 상속의 주요 이점은 신호, 도우미 메서드 및 복사 붙여넣기 코드를 완전히 피할 수 있다는 것입니다.특히 앱이 기본 CRUD 작업보다 훨씬 더 많은 작업을 수행하는 경우.다중 상속이 있는 보기는 특히 알 수 없는 코드 기반인 경우 신호 및 도우미 메서드가 있는 코드를 디버깅하는 것이 몇 배 더 쉽습니다.

다중 상속 CBV와는 별도로 에서는 다양한 방법으로 디스패치, 템플릿 검색, 다양한 요청 유형 처리, 템플릿 컨텍스트 변수 전달, 양식 검증 등을 즉시 수행할 수 있습니다.이것들은 코드를 모듈화하여 유지관리할 수 있게 합니다.

일부 보기는 CBV로 가장 잘 구현되고 다른 보기는 FBV로 가장 잘 구현됩니다.

어떤 방법을 선택할지 확실하지 않으면 다음 차트를 참조하십시오.

여기에 이미지 설명 입력

두 스쿱의 몇 마디 말입니다.

팁 대체 접근 방식 - FBV와 함께 유지

일부 개발자는 대부분의 보기에 FBV를 사용하고 하위 분류가 필요한 보기에만 CBV를 사용하는 편을 선호합니다.그 전략도 좋습니다.

클래스 기반 보기는 Django 응용 프로그램에서 완전히 기능하는 CRUD 작업을 구현하려는 경우에 매우 좋으며, 마찬가지로 기능 기반 보기를 사용하여 구현하는 데 시간과 노력이 거의 걸리지 않습니다.

사이트/응용프로그램에서 CRUD를 구현하지 않을 경우에는 단순히 템플릿을 렌더링하는 것이 좋습니다.

저는 실시간 클래스 기반 뷰를 사용하여 간단한 CRUD 기반 애플리케이션을 만들었습니다.http://filtron.pythonanywhere.com/view/ (지금은 작동하지 않음)을 방문하여 즐기십시오.그러면 당신은 그것의 중요성을 알게 될 것입니다.

저는 견해를 확장할 실질적인 기회가 보이지 않는 대부분의 경우에 FBV를 사용해 왔습니다.문서에 나와 있는 것처럼, 저는 다음 두 가지 특성이 제 사용 사례에 적합하다면 CBV를 선택하는 것을 고려합니다.

  • 특정 HTTP 메서드(GET, POST 등)와 관련된 코드 구성은 조건부 분기 대신 별도의 메서드로 해결할 수 있습니다.
  • 믹스인(다중 상속)과 같은 객체 지향 기술을 사용하여 코드를 재사용 가능한 구성 요소로 분해할 수 있습니다.

기능 기반 보기(FBV)는 다음과 같습니다.

  • 사용하기 쉽지만
  • 코드는 상속으로 재사용할 수 없습니다.
  • 사용 권장

CBV(클래스 기반 보기)는 다음과 같습니다.

  • 너무 많은 학습 곡선은 정말 복잡하기 때문입니다.
  • 코드는 상속을 통해 재사용할 수 있습니다.
  • 사용하지 않는 것이 좋습니다(FBV가 훨씬 좋습니다).

언급URL : https://stackoverflow.com/questions/14788181/class-based-views-vs-function-based-views

반응형