Django

Django CBV - 제네릭 뷰 (Generic View)

UserDonghu 2023. 10. 16. 19:21

제네릭 뷰 : Django에서 제공하는 CBV(Class-Based View)로, 자주 쓰는 View가 미리 만들어져있다. 상속받아서 사용

공식 문서 : https://docs.djangoproject.com/en/4.2/ref/class-based-views/

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 

Base views

뷰 클래스를 생성하고, 다른 제네릭 뷰의 부모 클래스가 되는 기본 제네릭 뷰

 

- View : 최상위 제네릭 뷰, 기본 뷰, Django view를 만드는데 필요한 기능 제공

- TemplateView : 템플릿이 주어지면 렌더링을 해주는 뷰

- RedirectView : URL이 주어지면 리다이렉트 해주는 뷰

 

Generic display views

객체의 목록 또는 객체의 상세 정보를 보여주는 뷰

 

- DetailView : model과 템플릿을 받아 조건에 맞는 상세 오브젝트를 보여줌

- ListView : model과 템플릿을 받아 전체 오브젝트를 보여줌

 

Generic editing views

폼을 통해 객체를 생성, 수정, 삭제하는 기능을 제공하는 뷰

 

- FormView : 폼을 보여주고 처리

- CreateView : 폼을 보여주고 객체를 생성

- UpdateView : 폼을 조건에 맞게 보여주고 객체를 수정

- DeleteView : 객체를 삭제

 

Generic date views

날짜 기반 객체의 연/월/일 페이지로 구분해서 보여주는 뷰

 

- ArchiveIndexView : 조건에 맞는 객체의 날짜 정보를 출력
- YearArchiveView : 연도에 맞는 객체를 출력
- MonthArchiveView : 월에 맞는 객체를 출력
- WeekArchiveView : 주에 맞는 객체를 출력
- DayArchiveView : 일에 맞는 객체를 출력
- TodayArchiveView : 오늘 날짜에 객체를 출력

- DateDetailView : 연, 월, 일 조건에 맞는 객체를 출력


제네릭 뷰 오버라이딩

속성 변수 오버라이딩

- model

- queryset

- template_name : 템플릿 파일 명을 지정

- context_object_name : 뷰에서 템플릿 파일에 전달하는 context 변수명 지정

- paginate_by : 페이지당 출력 항목 수 지정

- date_field : 필터링할 날짜 모델의 필드 이름 지정

- form_class : 폼을 만드는데 사용할 클래스 지정

- sucess_url : 폼의 처리 성공 후 리다이렉트할 URL 주소

 

메소드 오버라이딩

- def get_queryset() : 기본적으로 모든 queryset 을 반환하지만 오버라이딩을 통해서 원하는 데이터를 반환하도록 제어가능

- def get_context_data(**kargs) : 기본적으로 딕셔너리 컨텍스트 데이터를 반환하지만 오버라이딩을 통해서 원하는 원하는 컨텍스트 데이터를 반환하도록 조작가능

- def form_valid(form) : 폼이 유효할때 실행