장고:클래스형 뷰, 제네릭 뷰: 두 판 사이의 차이
(새 문서: {{장고}} =클래스형 뷰= 기본적으로 뷰는 함수로 만들지만, 코드가 길어지면 클래스형 뷰가 필요하다. 중급자 이상으로 넘어가기 위해선...) |
편집 요약 없음 |
||
11번째 줄: | 11번째 줄: | ||
크게 4가지 분류의 클래스뷰가 있다. CRUD 기능을 제공하게끔. | 크게 4가지 분류의 클래스뷰가 있다. CRUD 기능을 제공하게끔. | ||
{| class="wikitable" | |||
|+ | |||
!기능 | |||
!뷰 이름 | |||
!비고 | |||
! | |||
|- | |||
|Create | |||
|CreateView | |||
|form_class = 사용할 폼이름 | |||
| | |||
|- | |||
|Read | |||
|DetailView | |||
| | |||
| | |||
|- | |||
|Update | |||
|UpdateView | |||
| | |||
| | |||
|- | |||
|Delete | |||
|DeleteView | |||
| | |||
| | |||
|} | |||
Class형 view가 편하다곤 하지만.. 그 강점은 장고가 업데이트 되 때에 일관성 있게 작동할 가능성을 높여준다는 것 외엔.. 딱히 모르겠다. 사실, 엄청 편리한 것도 모르겠고.. 공부를 위해선, 전체작동방식의 느낌을 알기 위해선 함수를 처음부터 짜는 view가 더 좋은 듯하다.(장고 자체를 더 공부해야 한다는 점에서 별로다; 그럴바엔 파이썬 자체를 더 다뤄보지!) | Class형 view가 편하다곤 하지만.. 그 강점은 장고가 업데이트 되 때에 일관성 있게 작동할 가능성을 높여준다는 것 외엔.. 딱히 모르겠다. 사실, 엄청 편리한 것도 모르겠고.. 공부를 위해선, 전체작동방식의 느낌을 알기 위해선 함수를 처음부터 짜는 view가 더 좋은 듯하다.(장고 자체를 더 공부해야 한다는 점에서 별로다; 그럴바엔 파이썬 자체를 더 다뤄보지!) | ||
40번째 줄: | 66번째 줄: | ||
|success_url='/app/' | |success_url='/app/' | ||
|- | |- | ||
| | |model | ||
| | |어떤 모델에 대한 뷰인지. | ||
| | |model = User | ||
|} | |} | ||
==유의사항== | ==유의사항== |
2021년 1월 2일 (토) 15:44 판
장고! 웹 프레임워크! 틀:장고
클래스형 뷰
기본적으로 뷰는 함수로 만들지만, 코드가 길어지면 클래스형 뷰가 필요하다. 중급자 이상으로 넘어가기 위해선 필수적으로 숙달해야 할 내용.
함수형 뷰보다 재사용하기가 쉬워 고급사용자가 될수록 더 많이 사용하게 되는 형태.
제네릭 뷰
View는 기본적으로 함수로 만들지만, 이미 자주 쓰이는 기능을 또 새로이 만들어야 할까? 이미 개발된 뷰가 있다.이를 제네릭뷰라 부르며, 클래스형으로 구성되어 있다.
장고에서 제공하는 뷰이다.
크게 4가지 분류의 클래스뷰가 있다. CRUD 기능을 제공하게끔.
기능 | 뷰 이름 | 비고 | |
---|---|---|---|
Create | CreateView | form_class = 사용할 폼이름 | |
Read | DetailView | ||
Update | UpdateView | ||
Delete | DeleteView |
Class형 view가 편하다곤 하지만.. 그 강점은 장고가 업데이트 되 때에 일관성 있게 작동할 가능성을 높여준다는 것 외엔.. 딱히 모르겠다. 사실, 엄청 편리한 것도 모르겠고.. 공부를 위해선, 전체작동방식의 느낌을 알기 위해선 함수를 처음부터 짜는 view가 더 좋은 듯하다.(장고 자체를 더 공부해야 한다는 점에서 별로다; 그럴바엔 파이썬 자체를 더 다뤄보지!)
내부적으로 어떻게 작동하는지 알기 어려워, 도리어 혼란스러울 때도 있다.
#제네릭 뷰에서 데이터를 탬플릿에 전달할 때 리스트 이름이 지정되어 있는데, 리스트 이름을 바꾸려면 get_queryset함수 안에 이 변수를 넣는다.(글쓰기 기능구현 참조)
context_object_name='바꿀리스트명'
기본적으로 짧기 때문에 urls.py 안에 바로 기입해줘도 가독성에 무리가 적다.
제네릭 뷰의 변수
변수 | 설명 | 사용예 |
---|---|---|
fields | 어떤 필드를 기입할지. | fields=['subject', 'text'] |
tempalte_name | 기본 탬플릿 말고 따로 지정할 때 | template_name='app/list.html' |
success_url | 함수의 기능이 성공했을 때 어떤 url로 보낼지 지정 | success_url='/app/' |
model | 어떤 모델에 대한 뷰인지. | model = User |
유의사항
url.py 에서 사용할 때
제네릭 뷰를 사용할 때 urls.py에서 어떤 변수명을 사용하는 게 아니라, 변수명들이 예약되어 있다.
변수 | 설명 |
---|---|
<int:pk> | 기본키를 받아들이는 변수 |
함수명 뒤에 .as_view()를 붙인다.
그냥 view를 사용할 땐 함수명을 쓰면 됬지만, 제네릭 뷰에선 마지막에 .as_view()를 붙여주어야 한다.
탬플릿에서 사용할 때
ListView에선 모델명_list 라는 변수로 탬플릿에 전달된다.
DetailView에선 object라는 변수로 모델이 탬플릿에 전달된다.