기존에 제작해 놓았던 FBV로 만든것들을 CBV로 다시 만들어보려 한다. MTV 모델에 관한 글과 FBV 와 CBV 에 대한 글을 조만간 올려볼 예정이다.
● CBV로 포스트 목록 페이지 만들기
ListView를 이용한 포스트 목록 만들기
Django 에서 ListView 클래스를 제공해준다. 따라서 이 클래스를 이용하여 더욱 쉽게 구현할 수 있다. PostView 클래스를 ListView 클래스를 상속하고 model 변수 선언후 Post로 초기화 해준다.
urls.py 수정
URL의 마지막이 /blog/ 일때 PostList 클래스를 실행하도록 수정한다.
템플릿 파일 지정
Django가 제공해주는 ListView는 파일명 뒤어 _list 가 붙은 html 파일을 기본 템플릿으로 사용하도록 설정되어 있다. 여기서 두 가지 선택지가 있는데 편한대로 선택하면 된다.
1. 기본 _list가 붙은 파일 이름이 싫다면 blog/views.py 파일에서 클래스 맨 아래쪽에 template_name = 'blog/index.html' 추가로 기본 템플릿 사용이 아닌 사용자가 임의로 정해줄 수 있다.
2. 반면에 기본 템플릿을 사용하기로 하였다면 이 방법은 위의 방법보다 더 간단한 방법이다. index.html 파일 이름을 post_list.html 로 수정하고 마무리로 blog/templates/blog/index.html 파일의 for 문을 posts 에서 post_list 로 수정하면 된다.
최신 포스트 부터 정렬하고 싶다면 views.py의 PostList 클래스 마지막 부분에 ordering = '-pk'를 입력하면 된다.
● CBV로 포스트 상세 페이지 만들기
DetailView로 포스트 상세 페이지 만들기
Django 에서 포스트 상세 페이지를 DetailView라는 클래스를 지원해준다. 맨위에 import 한 render는 더이상 필요없으므로 주석처리 한다.
urls.py 수정
템플릿 파일 지정
간단하게 기존의 single_post_page.html의 파일이름을 post_detail.html 로 수정한다.
'Backend > Django + Bootstrap 개발 일지' 카테고리의 다른 글
11. 미디어 파일 관리 (0) | 2022.07.17 |
---|---|
10. 정적 파일 관리 (0) | 2022.07.14 |
8. URL설정, FBV 페이지 만들기 (0) | 2022.07.12 |
7. DB에 Post 모델 만들고 반영 (0) | 2022.07.11 |
6. App 개발 (블로그, 페이지) (0) | 2022.07.11 |