스터디 목표
블로그 애플리케이션 코드를 작성한다.
(1) 블로그 데이터 모델 만들기
- 모델에 대한 데이터베이스 마이그레이션을 만든다.
- 블로그 게시물(Post)을 데이터베이스에 저장할 수 있는 Post 모델을 정의한다.
- Post 모델에 다른 datetime 필드들을 추가한다.
- 기본 정렬 순서를 정의한다.
- publish 필드로 데이터베이스 인덱스를 정의한다.
- 게시물을 임시로 저장하는 기능을 추가한다.
- 어떤 사용자가 어떤 게시물을 작성했는지를 나타내는 사용자와 게시물 간의 관계를 생성한다.
(2) 애플리케이션 활성화하기
- 장고가 애플리케이션을 추적하고 해당 모델에 대해 데이터베이스 테이블을 생성할 수 있도록 하려면 프로젝트에서 blog 애플리케이션을 활성화해야 한다.
(3) 마이그레이션 생성 및 적용하기
- 블로그 게시물에 대한 데이터 모델이 있으므로 해당 데이터베이스 테이블을 만들어야 한다. 프로젝트 루트 디렉터리의 Terminal에서 다음 명령을 실행한다.
python manage.py makemigrations blog
- 다음 명령을 실행해서 첫 번째 마이그레이션의 SQL 출력을 살펴본다.
python manage.py sqlmigrate blog 0001
- 다음 명령을 실행해서 기존 마이그레이션을 적용한다.
python manage.py migrate
(4) 모델용 관리 사이트 만들기
python manage.py createsuperuser
- 원하는 사용자 이름, 이메일 및 패스워드를 입력하여 관리용 사용자를 생성한다.
(5) 관리 사이트에 모델 추가하기
- 블로그 모델을 관리 사이트에 추가하고 커스터마이징을 한다.
(6) 모델 관리자 생성하기
- 모든 모델의 기본 관리자는 objects 관리자이다.
- 관리자는 데이터베이스의 모든 객체를 조회하지만 모델에 커스텀 관리자를 정의할 수도 있다.
- PUBLISHED 상태의 모든 게시물을 조회하는 커스텀 관리자를 만든다.
(7) 목록과 상세 뷰 만들기
(8) get_object_or_404 숏컷 함수 사용하기
- 장고는 주어진 모델 관리자에서 get()을 호출하는 숏컷 함수를 제공하는데, 이 함수는 객체가 발견되지 않을 경우 DoesNotExist 예외 대신 Http404 에외를 발생시킨다.
(9) 뷰에 맞는 URL 패턴 추가하기
- URL 패턴을 사용해서 URL을 뷰에 매핑할 수 있다.
(10) 게시물 목록 템플릿 만들기
- post/list.html 파일을 편집해서 {% extends %} 템플릿 태그를 사용하면 장고가 blog/base.html 템플릿을 상속받도록 지시할 수 있다.
(11) 게시물 상세 템플릿 만들기
- post/detail.html 파일을 작성 후 브라우저로 돌아가면 게시물 제목 중 하나를 클릭해서 게시물의 상세 뷰를 볼 수 있다.