티스토리 뷰
views 파일의 역할
IndexView 만들기
인덱스 뷰는 "localhost:8000/reading"에 연결됩니다. 저는 인덱스 페이지에서 제가 몇 권의 책이 있고, 몇 개의 좋은 글귀가 있는 지를 보여줄 예정입니다.
인덱스 페이지 입니다.
위와 같이 보여주려면 코드를 어떻게 구성해야 할까요?
우선 코드처럼 TemlpateView를 갖고오셔서 상속받으면 됩니다. 템플릿 뷰는 해당되는 템플릿만 보여주면 될 때 사용하는 클래스 뷰입니다. template_name에 우리가 사용할 템플릿을 지정하기만 하면 됩니다.
우리가 만들 페이지의 경우에 책과 글귀가 얼마나 있는 지 나타납니다. 해당 값은 Book과 Wisesaying 클래스에 있기 때문에 불러와서 콘텍스트에 넣었습니다.
장고의 컨텍스트(context)는 무슨 역할을 할까요?
데이터베이스의 값을 템플릿에서 사용하려면 뷰에서 값을 전달해야합니다. 그때 컨텍스트라는 형태로 템플릿에 값을 전달합니다. 책의 수와 글귀의 수를 변수에 담아서 context['data'] 안에 넣어서 context를 리턴하면 템플릿에서 data.book_num 또는 data.Wisesaying_num의 형태로 책의 수와 글귀의 수를 사용할 수 있습니다.
ListView와 DetailView 만들기
장고의 어려운 점이자 쉬운 점 중의 하나가 알아서 찾아서 하기 때문에 "갑자기 이게 왜 이러지?" 하게 생각하게 만든다는 것입니다.
책의 리스트를 보여주는 뷰(localhost:8000/reading/book)와 그 책의 좋은 글귀를 보여주는 뷰(localhost:8000/reading/wisesaying/<int:pk>)는 해당 코드가 끝입니다. 너무 간단하게 정의했죠?
책의 리스트를 보여주는 페이지입니다.
책의 글귀를 보여주는 뷰입니다.
뷰는 저렇게 간단히 정의하고 템플릿만 신경쓰면 이와 같은 페이지들이 만들어집니다.
생략된 부분 생각해보기
클래스 뷰는 많은 부분을 알아서 해주기 때문에 코드가 엄청 간결해집니다. 그 힘이 느껴지시나요?
다음 포스팅에서는 템플릿을 만들어보도록 하겠습니다.
'Backend-dev > python' 카테고리의 다른 글
django에 css 부분 추가하기 (0) | 2018.10.21 |
---|---|
django의 template 작성하기 (0) | 2018.10.21 |
djanog urls파일 만들기 (0) | 2018.10.19 |
reading 앱의 어드민을 커스텀 해보기 (0) | 2018.10.18 |
reading 앱의 모델 정의하기 (0) | 2018.10.18 |