5SOO_O 의 개발 공부 일지
[Django] Generic View 본문
- 뷰
웹 요청을 받아 최종 응답 데이터를 웹 클라이언트로 반환하는 함수 ( 웹 클라이언트? 서비스를 제공받는 컴퓨터나 프로그램 )
웹 요청 분석
데이터베이스 처리 등 필요한 로직 수행
템플릿을 통해 화면에 표시할 데이터를 만들어, 최종 데이터를 웹클라이언트에게 응답
- 제너릭 뷰
장고에서 기본으로 제공하는 클래스형 뷰
| 제너릭 뷰 분류 | 이름 | 기능 |
| 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
새로운 레코드를 생성해서 테이블에 저장해주는 뷰. 레코드 정보를 입력받을 수 있는 폼이 필요하다.
'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 |