5SOO_O 의 개발 공부 일지

[Django] Generic View 본문

Django

[Django] Generic View

5soo_o 2022. 1. 6. 09:51

- 뷰

웹 요청을 받아 최종 응답 데이터를 웹 클라이언트로 반환하는 함수 ( 웹 클라이언트? 서비스를 제공받는 컴퓨터나 프로그램 )

웹 요청 분석

데이터베이스 처리 등 필요한 로직 수행

템플릿을 통해 화면에 표시할 데이터를 만들어, 최종 데이터를 웹클라이언트에게 응답

 

 

- 제너릭 뷰

장고에서 기본으로 제공하는 클래스형 뷰

제너릭 뷰 분류 이름 기능
Base View View 가장 기본이 되는 최상위 제너릭 뷰
다른 모든 제너릭 뷰는
View의 하위 클래스이다.
TemplateView 템플릿이 주어지면 해당 템플릿을 렌더링
RedirectView URL이 주어지면 해당 URL로 redirect
Generic Display View ListView 조건에 맞는 여러개의 객체 리스트 보여줌
DetailView 객체 하나에 대한 상세 정보 보여줌
Generic Edit View FormView 폼이 주어지면 해당 폼을 보여줌
CreateView 폼을 보여주고
폼의 내용으로 DB레코드를 신규 생성
UpdateView 폼을 보여주고
폼의 내용으로 기존 DB레코드 수정
DeleteView 삭제 컨펌 폼을 보여주고
기존DB레코드 삭제
Generic Date View ArchiveIndexView 조건에 맞는 여러 개의 객체 및 
그 객체에 대한 날짜 정보 보여줌
YearArchiveView 연도가 주어지면
그 연도에 해당하는 객체 보여줌
MonthArchiveView 연, 월이 보여지면 
그에 해당하는 객체들을 보여줌
WeekArchiveView 연도와 주차가 주어지면
그에 해당하는 객체들을 보여줌
DayArchiveView 연, 월, 일이 주어지면
그 날짜에 해당하는 객체들을 보여줌
TodayArchiveView 오늘 날짜에 해당하는 객체를 보여줌
DateDetailView 연, 월, 일, 기본키 또는 슬러그가 주어지면
그에 해당하는 특정 객체 하나에 대한
상세 정보를 보여줌

 

- Base View

1. View

모든 클래스의 기본이 되는 최상위 뷰

모든 클래스형 뷰는 이 View 클래스를 상속받는다.

 

2. TemplateView

화면에 보여줄 템플릿 파일을 처리

템플릿 파일만 지정해주면 된다.

 

3. RedirectView

주어진 URL로 redirect 해주는 제너릭 뷰

URL 속성이 필수이나, URL대신 URL 패턴명이 주어져도 URL을 알아낼 수 있다.

URL을 알 수 없다면 410 에러 응답을 발생시킨다.

 

* redirect ? 

redirect(to, *args, permanent=False, **kwargs)

to 인자로 주어진 URL로 이동하기 위한 HttpResponseRedirect 객체를 반환한다.

( HttpResponseRedirect? HttpResponse의 하위 클래스, Http 302코드(요청된 리소스가 임시적으로 이동 - URL 리소스를 찾았지만 다른 URL로 이동 )를 반환한다. 

redirect는 POST나 form을 통과시킨 다음 아예 다른 페이지로 옮겨갈 때 사용하는 방식이다.

 

 

 

- Generic Display View

1. DetailView

특정 객체 하나에 대한 정보를 보여주는 뷰

주로 테이블에서 기본키(pk)로 지정된 레코드의 정보들을 보여줄 때 사용한다.

 

2. ListView

여러 객체의 리스트를 보여주는 뷰

주로 테이블의 모든 레코드에 대한 목록을 보여줄 때 사용한다

 

 

Generic Edit View

1. FormView

폼을 보여주기 위한 뷰

폼을 지정해주는 form_class, 폼을 렌더링할 때 필요한 template_name, 폼 처리가 성공한 후 리다이렉트 목적지 URL을 지정하는 success_url 속성이 필요하다.

 

2. CreateView

새로운 레코드를 생성해서 테이블에 저장해주는 뷰. 레코드 정보를 입력받을 수 있는 폼이 필요하다. 

 

728x90

'Django' 카테고리의 다른 글

2022 06 20  (0) 2022.06.20
[all-auth] Django 카카오 로그인 구현하기  (0) 2022.02.22
장고로 쇼핑몰을 만들어보면서 만난 에러 정리  (0) 2022.02.14
[ForeignKey] on_delete 종류  (0) 2022.01.15
[Django] 장고의 구조  (0) 2021.12.05