오답노트
[Django] 기본 View 와 Generic View 본문
기본 View
이전 포스트에서 사용하던 View 형태는 함수 기반의 View를 만들었다. 또 Class 기반의 View도 작성할 수 있는데 아래에서 확인 해보자.
views.py 에는 다음과 같이 Class 기반 View를 선언했다.
urls.py 에는 다음과 같이 위 View를 호출하도록 한다.
보통 함수 기반 View에서 호줄하지 않는 as_view를 호출한다. as_view는 뭘까?
우선 class 기반 view가 View 클래스를 상속 받는 것을 알아야한다.
get은 View 클래스에 있는 메소드로 GET요청이 있을 때 실행되는 함수이다.
as_view또한 View 클래스 안에 선언되어 있는 메소드이다.
https://ccbv.co.uk/projects/Django/4.1/django.views.generic.base/View/
View -- Classy CBV
http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace'] View
ccbv.co.uk
위 링크는 View 클래스에 대한 속성과 메소드들에 대한 설명이 있는 Doc 이다.
메소드에서 as_view를 확인할 수 있는데, 내용은 아래와 같다.
결국에는 view라는 함수를 호출하도록 되어 있다. 이 view 안에서 return 하는 dispatch 함수는 요청에 대한 적절한 응답을 하도록 되어 있다.
Generic View
위에서 살펴봤듯 View 클래스를 상속 받아 class 기반 view를 만들 수 있다. 이러한 객체 지향 개념을 잘 활용할 수 있도록 이미 View를 장고에서는 다 만들어 놨다.
즉 이전 포스트처럼 View를 굳이 다 만들 필요가 없이 원하는 혹은 비슷한 기능을 하는 View Class를 찾아 그대로 쓰거나 상속 받고 함수들만 오버라이딩하면 쉽게 만들 수 있는 것이다.
https://ccbv.co.uk/projects/Django/4.1/
Django 4.1 -- Classy CBV
ccbv.co.uk
위에있는 뷰들이 미리 만들어져 있는 Generic View Class다.
ListView
간단히 ListView를 사용하여 쉽게 List 페이지를 구현 해보자.
urls.py 에 위처럼 추가하고
html은 위처럼 간단히 만들고 templates/앱이름 아래에 위치시켰다.
결과는 위와 같이 출력된다.
이전 포스트에는 view에도 내가 출력하고 싶은 정보를 받아서 템플릿과 연결하는 과정이 필요했는데, 제네릭 view를 사용하면 굳이 그럴 필요없다.
나머지 view들은 스스로 공부해서 사용해보도록 하자.
'Python > Django' 카테고리의 다른 글
[Django] Django File - Media File (0) | 2022.11.19 |
---|---|
[Django] Django File - Static File (0) | 2022.11.19 |
[Django] Django Form (1) | 2022.11.17 |
[Django] Manager & QuerySet (0) | 2022.11.16 |
[Django] 모델 관계 설정 (0) | 2022.11.15 |