일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- SSA
- MongoDB
- lambda
- dict
- RDS
- flask
- 카톡
- merge
- 튜플
- git
- SAA
- Class
- docker
- async
- react
- TypeScript
- EC2
- 채팅
- 중급파이썬
- NeXT
- crud
- 파이썬
- S3
- AWS
- Vue
- socket io
- wetube
- pandas
- Props
- node
- Today
- Total
초보 개발자
listview 본문
우리는 pagination을 구현해보았다. 근데 이번에는 class based view를 만들어 보려고한다. 좀 전에는 함수로 만들었지만 이번엔 클래스로 만들어 준다. 장고가 우릴 위해 많은 클래스들을 이미 만들어 두었고 우리는 이걸 사용하면 된다.
우리가 사용할 listview는 list오브젝트를 보여준다. 기본적으로 model을 정의해주면 된다.
그리고 urls로가서 다음과 같이 적어주자.
path는 url과 함수만 가진다. 그리고 homeview는 함수가 아니라 class이다.
장고에서 class based view는 view로 변신시켜주는 메소드가 있다. as_view()를 적어주면 된다.
listview는 render, request, template등도 해줄 필요가 없이 자동으로 해준다.
자동으로 rooms (앱네임)의 rooms_list.html을 자동으로 templates에서 찾아서 출력해준다.
이 view가 실행되고 있는 동안 우리가 정의한 model의 list를 html에서 object_list로 사용할 수 있다.
이렇게 바꿀 수 있다. object_list는 class based view에서 html로 넘겨주는 모델리스트이다. page_obj는 paginator.get_page(num)과 같은 거라고 생각하면 될 것 같다.
listview는 는 여러가지 클래스를 상속받아 구성되어 있다. 여러 속성과 메서드가 있다. ccv사이트의 listview를 들어가면 다음과 같이 잘 정리가 되어있다.
paginate_by = 10으로 정해주면 ?page=1 처럼 접근할 수 있고 10개씩만 출력해주는 걸 확인할 수 있다,
orphans도 정해줄 수 있고, created기준으로 정렬해줄 수도 있다. 우린 프로그래밍 없이 model = models.room 이것만으로 모든 room을 보여주고 있다. 신기하다
get_context_data라는 메서드를 오버라이딩 하면 우리가 직접 원하는 데이터를 브라우저에 넘겨줄 수 있다.
기본적으로 object_list나 page_obj는 context에 담겨져 보내진다. 따라서 우리가 이걸 오버라이딩해서 우리만의 데이터를 추가할 수 있는 것이다 만약 여기서 super()를 호출하지 않으면 앞서말한 object_list나 page_obj는 담겨지지 않는채로 전달 될 것이다.
'Python > airbnb 클론' 카테고리의 다른 글
Http404, FBV detail -> CBV detail (0) | 2022.02.07 |
---|---|
url 'namespace : name', reverse, get_absolute_url (0) | 2022.02.07 |
pagenation 2 (0) | 2022.02.06 |
pagenation 1 (0) | 2022.02.05 |
extend base.html, include (0) | 2022.02.05 |