SlideShare une entreprise Scribd logo
1  sur  20
장고걸스 서울
블루북 스터디
(Django View 심화1)
김 중 현
출처
해당 슬라이드는 한빛미디어에서 출간한
“파이썬 웹 프로그래밍 (실전편) : Django(장고)를
활용한 쉽고 빠른 웹 개발”의 내용을
참고하여 만들었음을 먼저 알립니다.
http://www.hanbit.co.kr/store/books/look.php?p_
code=B7703021280
장고 핵심 기능 - View
장고(Django)에서는 View를 함수로 작성할 수 있고, 클래스로도 작성할 수 있다.
간단한 로직인 경우는 함수형 뷰로 신속하게 개발할 수 있고, 프로젝트가 크고
로직이 복잡하면 클래스형 뷰로 개발하는 것이 좋다.
장고는 잘 준비된 클래스형 제네릭 뷰를 제공하고 있다.
클래스형 뷰를 작성하기 전, 우리가 개발하고자 하는 목적에 가장 알맞은 제네릭
뷰를 선택하여 상속 받고 필요한 속성과 메소드를 오버라이딩한다.
제네릭 뷰(Generic View)?
장고는 웹 프로그램 개발 시 공통적으로 사용하는 로직을 미리 개발해놓고 기본
클래스로 제공하고 있는데, 이것이 바로 ‘제네릭 뷰’이다.
개발자는 이러한 제네릭 뷰를 상속받아서 필요한 속성과 메소드를 오버라이딩
하여 사용할 수 있다.
제네릭 뷰의 종류들 - 1
제네릭 뷰 분류 제네릭 뷰 이름 뷰의 기능 또는 역할
Base View View 가장 기본이 되는 최상위 제네릭 뷰. 다른 모든 제네릭 뷰들은
View의 하위 클래스.
TemplateView 템플릿이 주어지면 해당 템플릿을 렌더링.
RedirectView URL이 주어지면 해당 URL로 리다이렉트.
Generic Display View DetailView 객체 하나에 대한 상세 정보를 보여줌.
ListView 조건에 맞는 여러 객체를 보여줌.
제네릭 뷰 간략 설명 - Base View, Generic Display View
View : 모든 클래스형 뷰의 기본이 되는 최상위 뷰. 원하는 로직에 맞는 제네릭 뷰가 없는 경우 이 뷰를 상속받아서 새로
운 클래스형 뷰를 작성할 수도 있음.
TemplateView : 화면에 보여줄 템플릿 파일을 처리하는 정도의 간단한 뷰.
RedirectView : 주어진 URL로 리다이렉트시켜주는 제네릭 뷰. 만일 URL을 알 수 없다면, 410 에러 응답 발생. 복잡한 로
직 없이 리다이렉트만을 원할 때 사용.
DetailView : ListView와 함께 가장 많이 사용됨. 특정 객체 하나에 대한 상세 정보를 보여준다. URLconf의 URL 정의를 이
용하여 특정 테이블의 특정 컬럼 값을 기준으로 레코드를 찾을 수 있음. 즉, 테이블은 뷰 클래스에서 지정하고 레코드 검
색용 키는 URLconf에서 지정. 레코드 검색용 키는 보통 기본키(PK) 사용.
ListView : 자주 사용하는 제네릭 뷰. 여러 객체의 리스트를 보여줌. 테이블의 모든 레코드를 리스팅해주는 등...
제네릭 뷰의 종류들 - 2
제네릭 뷰 분류 제네릭 뷰 이름 뷰의 기능 또는 역할
Generic Edit View FormView 폼이 주어지면 해당 폼을 보여줌.
CreateView 객체를 생성하는 폼을 보여줌.
UpdateView 기존 객체를 수정하는 폼을 보여줌.
DeleteView 기존 객체를 삭제하는 폼을 보여줌.
제네릭 뷰 간략 설명 - Generic Edit View
FormView : 폼을 보여주기 위한 제네릭 뷰. 폼을 지정해주는 form_class와 폼을 렌더링하는 데에 필요한 template_name
속성이 주요 속성. 추가적으로 폼 처리가 성공한 후에 리다이렉트 목적지 URL을 지정하는 success_url 속성도 사용 가능
함. get() 메소드와 post() 메소드 구분해 처리, form_valid() 메소드 오버라이딩을 통한 폼 입력 데이터 유효성 검사, 처리
완료 후 페이지 이동 등의 복잡한 과정을 FormView가 알아서 처리해줌.
CreateView : 새로운 레코드를 생성해서 테이블에 저장해주는 뷰. CreateView는 FormView의 기능을 포함, 모델 정의로
부터 폼을 자동으로 만들어주는 기능과 데이터베이스에 레코드를 저장하는 기능이 더 추가됨. 작업 대상 테이블을
model 속성으로 지정, 폼을 만들 때 사용할 필드를 fields 속성으로 정의, 처리 성공 후 이동할 URL을 success_url 속성으
로 지정.
UpdateView : 테이블에 이미 있는 레코드를 수정해주는 제네릭 뷰. 작업 대상 테이블로부터 폼을 만들어주며, 최종적으
로는 수정된 레코드를 테이블에 저장. DetailView와 동일하게 수정할 레코드를 URLconf에서 지정.
DeleteView : 기존 객체를 삭제하기 위한 제네릭 뷰. 삭제 처리는 내부에서 이뤄지고 코드에 나타나는 것은 삭제 확인 화
면. DeleteView는 삭제 확인용 폼만 필요하므로 입력 항목이 불필요하고 모델 정의를 참조하지도 않음. 삭제할 레코드를
URLconf에서 지정.
제네릭 뷰의 종류들 - 3
제네릭 뷰 분류 제네릭 뷰 이름 뷰의 기능 또는 역할
Generic Date View YearArchiveView 년도가 주어지면 그 년도에 해당하는 객체들을 보여줌.
MonthArchiveView 연, 월이 주어지면 그에 해당하는 객체들을 보여줌.
WeekArchiveView 연도와 주차가 주어지면 그에 해당하는 객체들을 보여줌.
DayArchiveView 연, 월, 일이 주어지면 그 날짜에 해당하는 객체들을 보여줌.
TodayArchiveView 오늘 날짜에 해당하는 객체들을 보여줌.
DateDetailView 연, 월, 일, 기본 키(또는 슬러그)가 주어지면 그에 해당하는 특정
객체 하나에 대한 상세 정보를 보여줌.
제네릭 뷰 간략 설명 - Generic Date View 1
ArchiveIndexView : 여러 객체를 대상으로 날짜를 기준으로 리스팅해주는 제네릭 뷰. 날짜 기반 제네릭 뷰의 최상위 뷰.
날짜 기준 내림차순으로 정렬. 어느 필드를 기준으로 정렬할지를 결정하는 date_field 속성이 가장 중요.
YearArchiveView : 연도가 주어지면, 여러 객체를 대상으로 가능한 월을 알려주는 제네릭 뷰. 기본 동작은 객체들을 출력
해주는 것이 아니라, 객체의 날짜 필드를 조사해 월을 추출한다는 점을 유의. 만일 주어진 연도에 해당하는 객체들을 알
고 싶으면 make_object_list 속성을 True로 지정. model 속성이나 date+field 속성은 ArchiveIndexView와 동일. 마찬가지
로 인자를 URLconf에서 추출. 템플릿으로 넘겨주는 컨텍스트 변수 중에서 object_list는 인자로 주어진 연도에 해당하는
객체들의 리스트, date_list는 그 객체들의 월을 담고 있음. make_object_list 속성이 False이면 object_list는 None.
MonthArchiveView : 주어진 연/월에 해당하는 객체를 보여주는 제네릭 뷰. 인자는 URLconf에서 추출. model 속성이나
date_field 속성은 ArchiveIndexView와 동일, make_object_list 속성은 없음. 템플릿 컨텍스트 변수 중에서 object_list는
인자로 주어진 연/월에 해당하는 객체들의 리스트를 담고 있고, date_list는 그 객체들의 일을 담고 있음.
제네릭 뷰 간략 설명 - Generic Date View 2
WeekArchiveView : 연도와 주(week)가 주어지면 그에 해당하는 객체를 보여주는 제네릭 뷰. 인자는 URLconf. 주 인자는
1년을 주차로 표현하므로, 1부터 53까지의 값을 가짐. model, date_field 속성을 가짐. 템플릿 컨텍스트 변수 중에서
object_list는 인자로 주어진 연/주에 해당하는 객체들의 리스트를 담고 있고, date_list는 그 객체들의 연도를 담고 있음.
DayArchiveView : 연/월/일이 주어지면 그에 해당하는 객체를 보여주는 제네릭 뷰. 인자는 URLconf에서 지정. model,
date_field 속성을 가짐. 템플릿 컨텍스트 변수 중에서 object_list는 인자로 주어진 연/월/일에 해당하는 객체들의 리스트
를 담고 있고, date_list는 그 객체들의 연도를 담고 있음.
TodayArchiveView : 오늘 날짜에 해당하는 객체를 보여주는 제네릭 뷰. 인자가 불필요함. 해당하는 URLconf로 들어오면,
뷰 내부에서 datetime.date.today() 함수로 오늘 날짜를 알아내서 처리. 템플릿 컨텍스트 변수 중에서 object_list는 오늘
날짜에 해당하는 객체들의 리스트를 담고 있고, date_list는 그 객체들의 연도를 담고 있음.
DateDetailView : 날짜 기준으로 특정 객체를 찾아서, 그 객체의 상세 정보를 보여주는 제네릭 뷰. 객체를 찾는데 사용하
는 인자로 기본키 또는 slug 인자와 함께 연/월/일 정보를 받음. URLconf에서 인자 지정. 다른 날짜 기반의 제네릭 뷰들
은 복수의 객체를 출력하나 DateDetailView는 특정 객체 하나만을 다룸. 따라서 템플릿 컨텍스트 변수는 object가 있으
며, obejct_list 및 date_list는 사용하지 않음.
중요!
제네릭 뷰의 작업 대상이 반드시 테이블이어야 하는 것은 아니다.
테이블의 레코드가 아니라도, 일반 객체들이 들어 있는 QuerySet 객체이면 제네
릭 뷰의 작업 대상이 될 수 있다.
따라서 대부분의 제네릭 뷰들은 작업 대상을 지정하기 위한 속성으로 model,
queryset 또는 get_queryset() 메소드를 제공한다.
제네릭 뷰 오버라이딩
분류 대상 설명
속성 오버라이
딩
model 기본 뷰 3개를 제외하고는 모든 제네릭 뷰에서 사용하는 속성.
뷰가 출력할 데이터가 들어 있는 모델 지정.
queryset 기본 뷰 3개를 제외하고는 모든 제네릭 뷰에서 사용하는 속성.
출력 대상이 되는 QuerySet 객체를 지정. 이 속성을 지정하면
model 속성은 무시됨.
template_name 모든 제네릭 뷰에서 사용. 템플릿 파일명을 문자열로 지정.
context_object_name 기본 뷰를 제외하고는 모든 제네릭 뷰에서 사용. 템플릿 파일
에서 사용할 컨텍스트 변수명을 지정.
paginate_by ListView와 날짜 기반 뷰에서 사용. 페이징 기능이 활성화된
경우, 페이지당 몇 개 항목을 출력할 것인지 정수로 지정.
success_url FormView, CreateView, UpdateView, DeleteView에서 사용.
폼에 대한 처리 성공 후 리다이렉트될 URL 지정.
제네릭 뷰 오버라이딩
분류 대상 설명
속성 오버라이
딩
date_field 날짜 기반 뷰에서 기준이 되는 필드 지정. 이 필드를 기준으로
연/월/일을 검사. 이 필드의 타입은 DateField 혹은
DateTimeField이어야 함.
make_object_list YearArchiveVeiw 사용 시 해당 년에 맞는 객체들의 리스트 생
성 여부를 지정. True이면 객체들의 리스트를 만들고 템플릿
에서 사용할 수 있고, False이면 queryset 속성에 None이 할
당.
form_class FormView, CreateView, UpdateView에서 사용. 폼을 만드는
데 사용할 클래스를 지정.
initial FormView, CreateView, UpdateView에서 사용. 폼에 사용할
초기 데이터를 딕셔너리로 지정.
fields CreateView, UpdateView에서 사용. 폼에 사용할 필드를 지정.
ModelForm 클래스의 Meta.fields 속성과 동일한 의미.
제네릭 뷰 오버라이딩
분류 대상 설명
메소드 오버라
이딩
get_queryset() 기본 뷰를 제외하고 모든 제네릭 뷰에서 사용. 출력 객체를 검
색하기 위한 대상 QuerySet 객체 또는 출력 대상인 객체 리스
트를 반환. 기본으로는 queryset 속성값을 반환. queryset 속
성이 지정되지 않은 경우 모델 매니저 클래스의 all() 메소드를
호출해 QuerySet 객체를 생성하여 이를 반환.
get_context_data(**kwarg) 모든 제네릭 뷰에서 사용. 템플릿에서 사용할 컨텍스트 데이
터를 반환.
form_valid(form) FormView, CreateView, UpdateView에서 사용.
get_success_url 메소드가 반환하는 URL로 리다이렉트를 수행.
Method Flowchart?
제네릭 뷰의 처리 흐름을 나타내는 용어.
다음은 대표적인 제네릭 뷰 중 DetailView와 ListView의 메소드 플로우차트.
Method Flowchart - ListView 1
dispatch : 클라이언트 요청 HTTP 메소드(GET, POST 등) 검사, 뷰 클래스에 정의
된 적절한 처리 메소드 호출.
http_method_not_allowed : dispatch 메소드에 의해 호출되는 메인 처리 메소드
를 찾지 못하는 경우, 이 메소드를 호출.
get_template_names : 템플릿 파일명을 담은 리스트를 반환.
get_queryset : 뷰에서 출력할 항목들의 리스트 반환.
Method Flowchart - ListView 2
get_context_object_name : 출력 대상이 되는 리스트에 대한 컨텍스트 변수명
리턴.
get_context_data : 템플릿에서 사용할 컨텍스트 데이터 리턴.
get 또는 post 등...: 메인 처리 메소드.
render_to_response : self.response_class 객체 리턴.
Method Flowchart - DetailView 1
dispatch : 클라이언트 요청 HTTP 메소드 검사. 뷰 클래스에 정의된 적절한 처리
메소드 호출.
http_method_not_allowed : dispatch 메소드에 의해 호출되는 메인 처리 메소드
를 찾지 못한 경우, 이 메소드를 호출.
get_template_names : 템플릿 파일명을 담은 리스트 반환.
get_slug_field : slug 필드명을 반환. 기본은 slug_field 속성값을 반환.
Method Flowchart - DetailView 2
get_queryset : 출력 객체 검색을 위한 대상 QuerySet 객체 반환.
get_object : 뷰가 출력한 객체 한 개를 리턴.
get_context_object_name : 컨텍스트 변수명을 리턴.
get_context_data : 템플릿에서 사용할 컨텍스트 데이터 리턴.
get 또는 post 등… : 메인 처리 메소드.
render_to_response : self.response_class 객체 리턴.

Contenu connexe

Tendances

Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Kyoung Up Jung
 
회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemyJc Kim
 
Django로 쇼핑몰 만들자
Django로 쇼핑몰 만들자Django로 쇼핑몰 만들자
Django로 쇼핑몰 만들자Kyoung Up Jung
 
Html5&css 3장
Html5&css 3장Html5&css 3장
Html5&css 3장홍준 김
 
처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1성일 한
 
처음배우는 자바스크립트, 제이쿼리 #2
처음배우는 자바스크립트, 제이쿼리 #2처음배우는 자바스크립트, 제이쿼리 #2
처음배우는 자바스크립트, 제이쿼리 #2성일 한
 
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
 [NEXT] Android 개발 경험 프로젝트 3일차 (Database) [NEXT] Android 개발 경험 프로젝트 3일차 (Database)
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)YoungSu Son
 
처음배우는 자바스크립트, 제이쿼리 #4
처음배우는 자바스크립트, 제이쿼리 #4처음배우는 자바스크립트, 제이쿼리 #4
처음배우는 자바스크립트, 제이쿼리 #4성일 한
 
Django in Production
Django in ProductionDjango in Production
Django in ProductionHyun-woo Park
 
처음배우는 자바스크립트, 제이쿼리 #3
처음배우는 자바스크립트, 제이쿼리 #3처음배우는 자바스크립트, 제이쿼리 #3
처음배우는 자바스크립트, 제이쿼리 #3성일 한
 
[하코사세미나] 한 시간 만에 배우는 Jquery
[하코사세미나] 한 시간 만에 배우는 Jquery[하코사세미나] 한 시간 만에 배우는 Jquery
[하코사세미나] 한 시간 만에 배우는 Jquery정석 양
 
챗봇 시작해보기
챗봇 시작해보기챗봇 시작해보기
챗봇 시작해보기성일 한
 
다시보는 Angular js
다시보는 Angular js다시보는 Angular js
다시보는 Angular jsJeado Ko
 
좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012Daum DNA
 
파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)
파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)
파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)성일 한
 
영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA경원 이
 

Tendances (20)

Light Tutorial Django
Light Tutorial DjangoLight Tutorial Django
Light Tutorial Django
 
Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.Django, 저는 이렇게 씁니다.
Django, 저는 이렇게 씁니다.
 
회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy회사에서 써보는 SQLAlchemy
회사에서 써보는 SQLAlchemy
 
Django로 쇼핑몰 만들자
Django로 쇼핑몰 만들자Django로 쇼핑몰 만들자
Django로 쇼핑몰 만들자
 
Html5&css 3장
Html5&css 3장Html5&css 3장
Html5&css 3장
 
플라스크 템플릿
플라스크 템플릿플라스크 템플릿
플라스크 템플릿
 
처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1
 
처음배우는 자바스크립트, 제이쿼리 #2
처음배우는 자바스크립트, 제이쿼리 #2처음배우는 자바스크립트, 제이쿼리 #2
처음배우는 자바스크립트, 제이쿼리 #2
 
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
 [NEXT] Android 개발 경험 프로젝트 3일차 (Database) [NEXT] Android 개발 경험 프로젝트 3일차 (Database)
[NEXT] Android 개발 경험 프로젝트 3일차 (Database)
 
처음배우는 자바스크립트, 제이쿼리 #4
처음배우는 자바스크립트, 제이쿼리 #4처음배우는 자바스크립트, 제이쿼리 #4
처음배우는 자바스크립트, 제이쿼리 #4
 
Django in Production
Django in ProductionDjango in Production
Django in Production
 
Light Tutorial Python
Light Tutorial PythonLight Tutorial Python
Light Tutorial Python
 
처음배우는 자바스크립트, 제이쿼리 #3
처음배우는 자바스크립트, 제이쿼리 #3처음배우는 자바스크립트, 제이쿼리 #3
처음배우는 자바스크립트, 제이쿼리 #3
 
[하코사세미나] 한 시간 만에 배우는 Jquery
[하코사세미나] 한 시간 만에 배우는 Jquery[하코사세미나] 한 시간 만에 배우는 Jquery
[하코사세미나] 한 시간 만에 배우는 Jquery
 
챗봇 시작해보기
챗봇 시작해보기챗봇 시작해보기
챗봇 시작해보기
 
다시보는 Angular js
다시보는 Angular js다시보는 Angular js
다시보는 Angular js
 
좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012좌충우돌 ORM 개발기 | Devon 2012
좌충우돌 ORM 개발기 | Devon 2012
 
Handlebars
HandlebarsHandlebars
Handlebars
 
파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)
파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)
파이썬 플라스크로 배우는 웹프로그래밍 #3 (ABCD)
 
영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA영속성 컨텍스트로 보는 JPA
영속성 컨텍스트로 보는 JPA
 

En vedette

Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현Sang Goo Kwon
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015sung yong jung
 
Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2Byeongsu Kang
 
open api seminar
open api seminaropen api seminar
open api seminarNamhoon Kim
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYHyun-woo Park
 
뭔지 모르지만 발표
뭔지 모르지만 발표뭔지 모르지만 발표
뭔지 모르지만 발표Kyoung Up Jung
 
Django ORM 왜 어렵게 느껴질까?
Django ORM 왜 어렵게 느껴질까?Django ORM 왜 어렵게 느껴질까?
Django ORM 왜 어렵게 느껴질까?Kyoung Up Jung
 
AlphaYak :: Artificially Intelligent Pharmacist Chatbot
AlphaYak :: Artificially Intelligent Pharmacist ChatbotAlphaYak :: Artificially Intelligent Pharmacist Chatbot
AlphaYak :: Artificially Intelligent Pharmacist Chatbotnadohyun
 
DjangoGirls를 위한 Django on AWS - 윤석찬 (DjangoGirls Seoul 모임)
DjangoGirls를 위한 Django on AWS - 윤석찬 (DjangoGirls Seoul 모임)DjangoGirls를 위한 Django on AWS - 윤석찬 (DjangoGirls Seoul 모임)
DjangoGirls를 위한 Django on AWS - 윤석찬 (DjangoGirls Seoul 모임)Amazon Web Services Korea
 
Fluenty(김강학 대표)_AI Startup D.PARTY_20161020
Fluenty(김강학 대표)_AI Startup D.PARTY_20161020Fluenty(김강학 대표)_AI Startup D.PARTY_20161020
Fluenty(김강학 대표)_AI Startup D.PARTY_20161020D.CAMP
 
알파고 해부하기 2부
알파고 해부하기 2부알파고 해부하기 2부
알파고 해부하기 2부Donghun Lee
 
마인즈랩 회사소개서 V2.3_한국어버전
마인즈랩 회사소개서 V2.3_한국어버전마인즈랩 회사소개서 V2.3_한국어버전
마인즈랩 회사소개서 V2.3_한국어버전Taejoon Yoo
 
Emily_Northrup PortfolioPieces
Emily_Northrup PortfolioPiecesEmily_Northrup PortfolioPieces
Emily_Northrup PortfolioPiecesEmily Northrup
 
Holiday inn pacote_turistico
Holiday inn pacote_turisticoHoliday inn pacote_turistico
Holiday inn pacote_turistico100002529091970
 
Iv & v република
Iv & v републикаIv & v република
Iv & v републикаIoana Stoyanova
 
03. Літаратура і мастацтва БССР у 1945-1955 гг.
03. Літаратура і мастацтва БССР у 1945-1955 гг.03. Літаратура і мастацтва БССР у 1945-1955 гг.
03. Літаратура і мастацтва БССР у 1945-1955 гг.AnastasiyaF
 
Unidad 2 analis foda
Unidad 2 analis fodaUnidad 2 analis foda
Unidad 2 analis fodaGriss Cancino
 

En vedette (20)

Slackbot with Python
Slackbot with PythonSlackbot with Python
Slackbot with Python
 
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
Kgc2006 Template Metaprogramming을 이용한 LuaTinker 구현
 
Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015Isomorphicspring Isomorphic - spring web seminar 2015
Isomorphicspring Isomorphic - spring web seminar 2015
 
Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2
 
open api seminar
open api seminaropen api seminar
open api seminar
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDY
 
뭔지 모르지만 발표
뭔지 모르지만 발표뭔지 모르지만 발표
뭔지 모르지만 발표
 
Django ORM 왜 어렵게 느껴질까?
Django ORM 왜 어렵게 느껴질까?Django ORM 왜 어렵게 느껴질까?
Django ORM 왜 어렵게 느껴질까?
 
AlphaYak :: Artificially Intelligent Pharmacist Chatbot
AlphaYak :: Artificially Intelligent Pharmacist ChatbotAlphaYak :: Artificially Intelligent Pharmacist Chatbot
AlphaYak :: Artificially Intelligent Pharmacist Chatbot
 
DjangoGirls를 위한 Django on AWS - 윤석찬 (DjangoGirls Seoul 모임)
DjangoGirls를 위한 Django on AWS - 윤석찬 (DjangoGirls Seoul 모임)DjangoGirls를 위한 Django on AWS - 윤석찬 (DjangoGirls Seoul 모임)
DjangoGirls를 위한 Django on AWS - 윤석찬 (DjangoGirls Seoul 모임)
 
Fluenty(김강학 대표)_AI Startup D.PARTY_20161020
Fluenty(김강학 대표)_AI Startup D.PARTY_20161020Fluenty(김강학 대표)_AI Startup D.PARTY_20161020
Fluenty(김강학 대표)_AI Startup D.PARTY_20161020
 
알파고 해부하기 2부
알파고 해부하기 2부알파고 해부하기 2부
알파고 해부하기 2부
 
마인즈랩 회사소개서 V2.3_한국어버전
마인즈랩 회사소개서 V2.3_한국어버전마인즈랩 회사소개서 V2.3_한국어버전
마인즈랩 회사소개서 V2.3_한국어버전
 
Daleel2016
Daleel2016Daleel2016
Daleel2016
 
Emily_Northrup PortfolioPieces
Emily_Northrup PortfolioPiecesEmily_Northrup PortfolioPieces
Emily_Northrup PortfolioPieces
 
Holiday inn pacote_turistico
Holiday inn pacote_turisticoHoliday inn pacote_turistico
Holiday inn pacote_turistico
 
Iv & v република
Iv & v републикаIv & v република
Iv & v република
 
03. Літаратура і мастацтва БССР у 1945-1955 гг.
03. Літаратура і мастацтва БССР у 1945-1955 гг.03. Літаратура і мастацтва БССР у 1945-1955 гг.
03. Літаратура і мастацтва БССР у 1945-1955 гг.
 
Auteur Theory
Auteur TheoryAuteur Theory
Auteur Theory
 
Unidad 2 analis foda
Unidad 2 analis fodaUnidad 2 analis foda
Unidad 2 analis foda
 

Similaire à Django View Part 1

[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기YoungSu Son
 
스프링 3.0 RESTful & restTemplate
스프링 3.0  RESTful & restTemplate스프링 3.0  RESTful & restTemplate
스프링 3.0 RESTful & restTemplateisyoon
 
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13hungrok
 
Cappuccino fundamental
Cappuccino fundamentalCappuccino fundamental
Cappuccino fundamentalJeongHun Byeon
 
안드로이드 프로그래밍 정복 - Android Study #어댑터뷰
안드로이드 프로그래밍 정복 - Android Study #어댑터뷰안드로이드 프로그래밍 정복 - Android Study #어댑터뷰
안드로이드 프로그래밍 정복 - Android Study #어댑터뷰Jake Yoon
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기NAVER Engineering
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발NAVER D2
 
안드로이드스터디 5
안드로이드스터디 5안드로이드스터디 5
안드로이드스터디 5jangpd007
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 Yong Joon Moon
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...탑크리에듀(구로디지털단지역3번출구 2분거리)
 
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web ComponentsEunYoung Kim
 
10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항Jihoon Kong
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사Rjs Ryu
 
신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판hyeonjae Cheon
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱NAVER D2
 
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성Lee Sang-Ho
 
Composite pattern
Composite patternComposite pattern
Composite pattern경 송
 
Spring MVC
Spring MVCSpring MVC
Spring MVCymtech
 

Similaire à Django View Part 1 (20)

[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기[NEXT] Andorid에 MVC 패턴 적용하기
[NEXT] Andorid에 MVC 패턴 적용하기
 
스프링 3.0 RESTful & restTemplate
스프링 3.0  RESTful & restTemplate스프링 3.0  RESTful & restTemplate
스프링 3.0 RESTful & restTemplate
 
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13
 
Cappuccino fundamental
Cappuccino fundamentalCappuccino fundamental
Cappuccino fundamental
 
안드로이드 프로그래밍 정복 - Android Study #어댑터뷰
안드로이드 프로그래밍 정복 - Android Study #어댑터뷰안드로이드 프로그래밍 정복 - Android Study #어댑터뷰
안드로이드 프로그래밍 정복 - Android Study #어댑터뷰
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
 
[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발[1A5]효율적인안드로이드앱개발
[1A5]효율적인안드로이드앱개발
 
안드로이드스터디 5
안드로이드스터디 5안드로이드스터디 5
안드로이드스터디 5
 
파이썬 플라스크 이해하기
파이썬 플라스크 이해하기 파이썬 플라스크 이해하기
파이썬 플라스크 이해하기
 
Hacosa js study 6th
Hacosa js study 6thHacosa js study 6th
Hacosa js study 6th
 
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
#32.스프링프레임워크 & 마이바티스 (Spring Framework, MyBatis)_스프링프레임워크 강좌, 재직자환급교육,실업자국비지원...
 
Introduction to Web Components
Introduction to Web ComponentsIntroduction to Web Components
Introduction to Web Components
 
10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항10장 아이패드에 대한 고려사항
10장 아이패드에 대한 고려사항
 
Angular 2 rc5 조사
Angular 2 rc5 조사Angular 2 rc5 조사
Angular 2 rc5 조사
 
신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판신입 웹 개발자 포트폴리오 / 댓글 게시판
신입 웹 개발자 포트폴리오 / 댓글 게시판
 
[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱[114]angularvs react 김훈민손찬욱
[114]angularvs react 김훈민손찬욱
 
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성
[방송통신대 컴퓨터과학과] HTML 웹 프로그래밍 과제물 작성
 
Composite pattern
Composite patternComposite pattern
Composite pattern
 
react-ko.pdf
react-ko.pdfreact-ko.pdf
react-ko.pdf
 
Spring MVC
Spring MVCSpring MVC
Spring MVC
 

Django View Part 1

  • 2. 출처 해당 슬라이드는 한빛미디어에서 출간한 “파이썬 웹 프로그래밍 (실전편) : Django(장고)를 활용한 쉽고 빠른 웹 개발”의 내용을 참고하여 만들었음을 먼저 알립니다. http://www.hanbit.co.kr/store/books/look.php?p_ code=B7703021280
  • 3. 장고 핵심 기능 - View 장고(Django)에서는 View를 함수로 작성할 수 있고, 클래스로도 작성할 수 있다. 간단한 로직인 경우는 함수형 뷰로 신속하게 개발할 수 있고, 프로젝트가 크고 로직이 복잡하면 클래스형 뷰로 개발하는 것이 좋다. 장고는 잘 준비된 클래스형 제네릭 뷰를 제공하고 있다. 클래스형 뷰를 작성하기 전, 우리가 개발하고자 하는 목적에 가장 알맞은 제네릭 뷰를 선택하여 상속 받고 필요한 속성과 메소드를 오버라이딩한다.
  • 4. 제네릭 뷰(Generic View)? 장고는 웹 프로그램 개발 시 공통적으로 사용하는 로직을 미리 개발해놓고 기본 클래스로 제공하고 있는데, 이것이 바로 ‘제네릭 뷰’이다. 개발자는 이러한 제네릭 뷰를 상속받아서 필요한 속성과 메소드를 오버라이딩 하여 사용할 수 있다.
  • 5. 제네릭 뷰의 종류들 - 1 제네릭 뷰 분류 제네릭 뷰 이름 뷰의 기능 또는 역할 Base View View 가장 기본이 되는 최상위 제네릭 뷰. 다른 모든 제네릭 뷰들은 View의 하위 클래스. TemplateView 템플릿이 주어지면 해당 템플릿을 렌더링. RedirectView URL이 주어지면 해당 URL로 리다이렉트. Generic Display View DetailView 객체 하나에 대한 상세 정보를 보여줌. ListView 조건에 맞는 여러 객체를 보여줌.
  • 6. 제네릭 뷰 간략 설명 - Base View, Generic Display View View : 모든 클래스형 뷰의 기본이 되는 최상위 뷰. 원하는 로직에 맞는 제네릭 뷰가 없는 경우 이 뷰를 상속받아서 새로 운 클래스형 뷰를 작성할 수도 있음. TemplateView : 화면에 보여줄 템플릿 파일을 처리하는 정도의 간단한 뷰. RedirectView : 주어진 URL로 리다이렉트시켜주는 제네릭 뷰. 만일 URL을 알 수 없다면, 410 에러 응답 발생. 복잡한 로 직 없이 리다이렉트만을 원할 때 사용. DetailView : ListView와 함께 가장 많이 사용됨. 특정 객체 하나에 대한 상세 정보를 보여준다. URLconf의 URL 정의를 이 용하여 특정 테이블의 특정 컬럼 값을 기준으로 레코드를 찾을 수 있음. 즉, 테이블은 뷰 클래스에서 지정하고 레코드 검 색용 키는 URLconf에서 지정. 레코드 검색용 키는 보통 기본키(PK) 사용. ListView : 자주 사용하는 제네릭 뷰. 여러 객체의 리스트를 보여줌. 테이블의 모든 레코드를 리스팅해주는 등...
  • 7. 제네릭 뷰의 종류들 - 2 제네릭 뷰 분류 제네릭 뷰 이름 뷰의 기능 또는 역할 Generic Edit View FormView 폼이 주어지면 해당 폼을 보여줌. CreateView 객체를 생성하는 폼을 보여줌. UpdateView 기존 객체를 수정하는 폼을 보여줌. DeleteView 기존 객체를 삭제하는 폼을 보여줌.
  • 8. 제네릭 뷰 간략 설명 - Generic Edit View FormView : 폼을 보여주기 위한 제네릭 뷰. 폼을 지정해주는 form_class와 폼을 렌더링하는 데에 필요한 template_name 속성이 주요 속성. 추가적으로 폼 처리가 성공한 후에 리다이렉트 목적지 URL을 지정하는 success_url 속성도 사용 가능 함. get() 메소드와 post() 메소드 구분해 처리, form_valid() 메소드 오버라이딩을 통한 폼 입력 데이터 유효성 검사, 처리 완료 후 페이지 이동 등의 복잡한 과정을 FormView가 알아서 처리해줌. CreateView : 새로운 레코드를 생성해서 테이블에 저장해주는 뷰. CreateView는 FormView의 기능을 포함, 모델 정의로 부터 폼을 자동으로 만들어주는 기능과 데이터베이스에 레코드를 저장하는 기능이 더 추가됨. 작업 대상 테이블을 model 속성으로 지정, 폼을 만들 때 사용할 필드를 fields 속성으로 정의, 처리 성공 후 이동할 URL을 success_url 속성으 로 지정. UpdateView : 테이블에 이미 있는 레코드를 수정해주는 제네릭 뷰. 작업 대상 테이블로부터 폼을 만들어주며, 최종적으 로는 수정된 레코드를 테이블에 저장. DetailView와 동일하게 수정할 레코드를 URLconf에서 지정. DeleteView : 기존 객체를 삭제하기 위한 제네릭 뷰. 삭제 처리는 내부에서 이뤄지고 코드에 나타나는 것은 삭제 확인 화 면. DeleteView는 삭제 확인용 폼만 필요하므로 입력 항목이 불필요하고 모델 정의를 참조하지도 않음. 삭제할 레코드를 URLconf에서 지정.
  • 9. 제네릭 뷰의 종류들 - 3 제네릭 뷰 분류 제네릭 뷰 이름 뷰의 기능 또는 역할 Generic Date View YearArchiveView 년도가 주어지면 그 년도에 해당하는 객체들을 보여줌. MonthArchiveView 연, 월이 주어지면 그에 해당하는 객체들을 보여줌. WeekArchiveView 연도와 주차가 주어지면 그에 해당하는 객체들을 보여줌. DayArchiveView 연, 월, 일이 주어지면 그 날짜에 해당하는 객체들을 보여줌. TodayArchiveView 오늘 날짜에 해당하는 객체들을 보여줌. DateDetailView 연, 월, 일, 기본 키(또는 슬러그)가 주어지면 그에 해당하는 특정 객체 하나에 대한 상세 정보를 보여줌.
  • 10. 제네릭 뷰 간략 설명 - Generic Date View 1 ArchiveIndexView : 여러 객체를 대상으로 날짜를 기준으로 리스팅해주는 제네릭 뷰. 날짜 기반 제네릭 뷰의 최상위 뷰. 날짜 기준 내림차순으로 정렬. 어느 필드를 기준으로 정렬할지를 결정하는 date_field 속성이 가장 중요. YearArchiveView : 연도가 주어지면, 여러 객체를 대상으로 가능한 월을 알려주는 제네릭 뷰. 기본 동작은 객체들을 출력 해주는 것이 아니라, 객체의 날짜 필드를 조사해 월을 추출한다는 점을 유의. 만일 주어진 연도에 해당하는 객체들을 알 고 싶으면 make_object_list 속성을 True로 지정. model 속성이나 date+field 속성은 ArchiveIndexView와 동일. 마찬가지 로 인자를 URLconf에서 추출. 템플릿으로 넘겨주는 컨텍스트 변수 중에서 object_list는 인자로 주어진 연도에 해당하는 객체들의 리스트, date_list는 그 객체들의 월을 담고 있음. make_object_list 속성이 False이면 object_list는 None. MonthArchiveView : 주어진 연/월에 해당하는 객체를 보여주는 제네릭 뷰. 인자는 URLconf에서 추출. model 속성이나 date_field 속성은 ArchiveIndexView와 동일, make_object_list 속성은 없음. 템플릿 컨텍스트 변수 중에서 object_list는 인자로 주어진 연/월에 해당하는 객체들의 리스트를 담고 있고, date_list는 그 객체들의 일을 담고 있음.
  • 11. 제네릭 뷰 간략 설명 - Generic Date View 2 WeekArchiveView : 연도와 주(week)가 주어지면 그에 해당하는 객체를 보여주는 제네릭 뷰. 인자는 URLconf. 주 인자는 1년을 주차로 표현하므로, 1부터 53까지의 값을 가짐. model, date_field 속성을 가짐. 템플릿 컨텍스트 변수 중에서 object_list는 인자로 주어진 연/주에 해당하는 객체들의 리스트를 담고 있고, date_list는 그 객체들의 연도를 담고 있음. DayArchiveView : 연/월/일이 주어지면 그에 해당하는 객체를 보여주는 제네릭 뷰. 인자는 URLconf에서 지정. model, date_field 속성을 가짐. 템플릿 컨텍스트 변수 중에서 object_list는 인자로 주어진 연/월/일에 해당하는 객체들의 리스트 를 담고 있고, date_list는 그 객체들의 연도를 담고 있음. TodayArchiveView : 오늘 날짜에 해당하는 객체를 보여주는 제네릭 뷰. 인자가 불필요함. 해당하는 URLconf로 들어오면, 뷰 내부에서 datetime.date.today() 함수로 오늘 날짜를 알아내서 처리. 템플릿 컨텍스트 변수 중에서 object_list는 오늘 날짜에 해당하는 객체들의 리스트를 담고 있고, date_list는 그 객체들의 연도를 담고 있음. DateDetailView : 날짜 기준으로 특정 객체를 찾아서, 그 객체의 상세 정보를 보여주는 제네릭 뷰. 객체를 찾는데 사용하 는 인자로 기본키 또는 slug 인자와 함께 연/월/일 정보를 받음. URLconf에서 인자 지정. 다른 날짜 기반의 제네릭 뷰들 은 복수의 객체를 출력하나 DateDetailView는 특정 객체 하나만을 다룸. 따라서 템플릿 컨텍스트 변수는 object가 있으 며, obejct_list 및 date_list는 사용하지 않음.
  • 12. 중요! 제네릭 뷰의 작업 대상이 반드시 테이블이어야 하는 것은 아니다. 테이블의 레코드가 아니라도, 일반 객체들이 들어 있는 QuerySet 객체이면 제네 릭 뷰의 작업 대상이 될 수 있다. 따라서 대부분의 제네릭 뷰들은 작업 대상을 지정하기 위한 속성으로 model, queryset 또는 get_queryset() 메소드를 제공한다.
  • 13. 제네릭 뷰 오버라이딩 분류 대상 설명 속성 오버라이 딩 model 기본 뷰 3개를 제외하고는 모든 제네릭 뷰에서 사용하는 속성. 뷰가 출력할 데이터가 들어 있는 모델 지정. queryset 기본 뷰 3개를 제외하고는 모든 제네릭 뷰에서 사용하는 속성. 출력 대상이 되는 QuerySet 객체를 지정. 이 속성을 지정하면 model 속성은 무시됨. template_name 모든 제네릭 뷰에서 사용. 템플릿 파일명을 문자열로 지정. context_object_name 기본 뷰를 제외하고는 모든 제네릭 뷰에서 사용. 템플릿 파일 에서 사용할 컨텍스트 변수명을 지정. paginate_by ListView와 날짜 기반 뷰에서 사용. 페이징 기능이 활성화된 경우, 페이지당 몇 개 항목을 출력할 것인지 정수로 지정. success_url FormView, CreateView, UpdateView, DeleteView에서 사용. 폼에 대한 처리 성공 후 리다이렉트될 URL 지정.
  • 14. 제네릭 뷰 오버라이딩 분류 대상 설명 속성 오버라이 딩 date_field 날짜 기반 뷰에서 기준이 되는 필드 지정. 이 필드를 기준으로 연/월/일을 검사. 이 필드의 타입은 DateField 혹은 DateTimeField이어야 함. make_object_list YearArchiveVeiw 사용 시 해당 년에 맞는 객체들의 리스트 생 성 여부를 지정. True이면 객체들의 리스트를 만들고 템플릿 에서 사용할 수 있고, False이면 queryset 속성에 None이 할 당. form_class FormView, CreateView, UpdateView에서 사용. 폼을 만드는 데 사용할 클래스를 지정. initial FormView, CreateView, UpdateView에서 사용. 폼에 사용할 초기 데이터를 딕셔너리로 지정. fields CreateView, UpdateView에서 사용. 폼에 사용할 필드를 지정. ModelForm 클래스의 Meta.fields 속성과 동일한 의미.
  • 15. 제네릭 뷰 오버라이딩 분류 대상 설명 메소드 오버라 이딩 get_queryset() 기본 뷰를 제외하고 모든 제네릭 뷰에서 사용. 출력 객체를 검 색하기 위한 대상 QuerySet 객체 또는 출력 대상인 객체 리스 트를 반환. 기본으로는 queryset 속성값을 반환. queryset 속 성이 지정되지 않은 경우 모델 매니저 클래스의 all() 메소드를 호출해 QuerySet 객체를 생성하여 이를 반환. get_context_data(**kwarg) 모든 제네릭 뷰에서 사용. 템플릿에서 사용할 컨텍스트 데이 터를 반환. form_valid(form) FormView, CreateView, UpdateView에서 사용. get_success_url 메소드가 반환하는 URL로 리다이렉트를 수행.
  • 16. Method Flowchart? 제네릭 뷰의 처리 흐름을 나타내는 용어. 다음은 대표적인 제네릭 뷰 중 DetailView와 ListView의 메소드 플로우차트.
  • 17. Method Flowchart - ListView 1 dispatch : 클라이언트 요청 HTTP 메소드(GET, POST 등) 검사, 뷰 클래스에 정의 된 적절한 처리 메소드 호출. http_method_not_allowed : dispatch 메소드에 의해 호출되는 메인 처리 메소드 를 찾지 못하는 경우, 이 메소드를 호출. get_template_names : 템플릿 파일명을 담은 리스트를 반환. get_queryset : 뷰에서 출력할 항목들의 리스트 반환.
  • 18. Method Flowchart - ListView 2 get_context_object_name : 출력 대상이 되는 리스트에 대한 컨텍스트 변수명 리턴. get_context_data : 템플릿에서 사용할 컨텍스트 데이터 리턴. get 또는 post 등...: 메인 처리 메소드. render_to_response : self.response_class 객체 리턴.
  • 19. Method Flowchart - DetailView 1 dispatch : 클라이언트 요청 HTTP 메소드 검사. 뷰 클래스에 정의된 적절한 처리 메소드 호출. http_method_not_allowed : dispatch 메소드에 의해 호출되는 메인 처리 메소드 를 찾지 못한 경우, 이 메소드를 호출. get_template_names : 템플릿 파일명을 담은 리스트 반환. get_slug_field : slug 필드명을 반환. 기본은 slug_field 속성값을 반환.
  • 20. Method Flowchart - DetailView 2 get_queryset : 출력 객체 검색을 위한 대상 QuerySet 객체 반환. get_object : 뷰가 출력한 객체 한 개를 리턴. get_context_object_name : 컨텍스트 변수명을 리턴. get_context_data : 템플릿에서 사용할 컨텍스트 데이터 리턴. get 또는 post 등… : 메인 처리 메소드. render_to_response : self.response_class 객체 리턴.