Django 연습에 최적! 프로젝트 4개로 배우는 Django 4
Django를 익히는 제일 좋은 방법은 무엇일까요? 이 책에서는 ‘좋은 예제 많이 만들어 보기’를 그 답으로 정했습니다. 블로그, 소셜 웹사이트, 온라인 상점, e-러닝 플랫폼 등 활용도 넘치는 4가지 예제와 함께 Django를 차근차근 배워 봅니다. 파이썬을 갓 뗀 분에게도 좋고, 이미 Django를 배웠지만 레퍼런스급 예제를 연습하고 다른 기술과 연계하여 나만의 Django 앱을 확장하고자 하는 용도로 읽기에도 좋습니다.
이 도서는 실습 파트로만 이루어진 완전 실습형 도서로, 처음부터 예제 프로그램을 만들며 Django의 사용법을 자연스럽게 익힐 수 있도록 구성한 도서입니다. 다행히 처음 1~3장부터 어려운 예제 프로그램을 만들지는 않고, 간단한 블로그를 만듭니다. 물론 Django로 만드는 만큼 웹페이지 부분만을 만들지는 않습니다. 기본적인 MTV 패턴부터 쿼리셋, 데이터베이스를 이용한 전문 검색 기능과 같이 백엔드의 요소 또한 다룹니다.
그 뒷장부터는 본격적으로 다양한 프로그램을 만듭니다. 온라인 상점, e-러닝 플랫폼과 같은 앞으로의 프로젝트의 기초로 사용하기 좋은 실용성 좋은 예제가 준비되어 있습니다. 단순히 겉모습만 묘사하는 선에서 배우지 않고, 소셜 웹사이트라면 소셜 인증, 온라인 상점이라면 외부 결제 모듈 사용법, e-러닝 플랫폼이라면 학생 등록 시스템 구현 등 실제 개발 시 알아 두어야 할 중요 관련 기술이나 구현법도 함께 알려줍니다.
감이 잘 오지 않는다면, 깊게 고민하지 말고 우선 책을 펼쳐 예제를 타이핑해 보기를 바랍니다. 중간중간 커피 한 모금 곁들이면 더 좋습니다. 800 페이지 이상의 분량에 걸쳐 4개의 프로젝트를 쉴 새 없이 만들다 보면 어느새 Django가 확실히 손에 익어 있을 것입니다.
1장 블로그 애플리케이션 만들기
블로그 애플리케이션을 통해 프레임워크를 소개합니다. 블로그 게시물을 표시하기 위한 기본 블로그 모델, 뷰, 템플릿 및 URL을 생성합니다. 장고 객체 관계형 매퍼(ORM)를 사용하여 QuerySet을 빌드하는 방법을 배우고, 장고 관리 사이트를 구성합니다.
2장 고급 기능으로 블로그 향상하기
블로그에 페이징을 추가하는 방법과 장고 클래스 기반 뷰를 구현하는 방법을 설명합니다. ‘장고로 이메일 보내기’에서는 장고로 이메일을 보내고 폼과 모델 폼을 처리하는 방법을 배웁니다. 또한 블로그 게시물에 댓글을 다는 시스템을 구현합니다.
3장 블로그 애플리케이션 확장하기
서드파티 애플리케이션을 통합하는 방법을 살펴봅니다. 이 장에서는 태그 시스템을 만드는 과정을 안내하고, 유사한 게시물을 추 천하기 위해 복잡한 QuerySet을 구축하는 방법을 배웁니다. 그 후 커스텀 템플릿 태그와 필터를 만드는 방법을 설명합니다. 또한 사이트맵 프레임워크를 사용하고 게시물에 대한 RSS 피드를 만드는 방법도 배웁니다. 마지막으로 PostgreSQL의 전문 검색 기능을 사용해서 검색 엔진을 구축함으로써 블로그 애플리케이션을 완성합니다.
4장 소셜 웹사이트 구축하기
소셜 웹사이트를 구축하는 방법을 설명합니다. 장고 인증 프레임워크를 사용하는 방법을 배우고 커스텀 프로필 모델로 사용자 모델을 확장합니다. 또한 이 장에서는 메시지 프레임워크를 사용하는 방법을 배우고 커스텀 인증 백엔드를 빌드합니다.
5장 소셜 인증 구현하기
파이썬 소셜 인증과 함께 OAuth 2를 사용해 구
글, 페이스북, 트위터에서 소셜 인증을 구현하는 방법을 다룹니다. 그 후 장고 확장
(Extensions)을 사용해서 HTTPS를 통해 개발 서버를 실행하고 소셜 인증 파이프라
인을 사용자 정의해서 사용자 프로필 생성을 자동화하는 방법을 알아봅니다..
6장 웹사이트에서 콘텐츠 공유하기
소셜 애플리케이션을 이미지 북마크 웹사이트로 변환하는 방법을 설명합니다. 그 후 모델에 대한 다대다 관계를 정의하고 프로젝트에 통합되는 JavaScript 북마클릿을 생성합니다. 또한 이 장에서는 이미지 썸네일을 생성하는 방법을 보여줍니다. 마지막으로 JavaScript와 장고를 사용해 비동기 HTTP 요청을 구현하는 방법과 무한 스크롤 페이징을 구현하는 방법을 배웁니다.
7장 사용자 활동 추적하기
사용자를 위한 팔로워 시스템을 구축하는 방법을 보여줍니다. 사용자 활동 스트림 애플리케이션을 만들어 이미지 북마크 웹사이트를 완성합니다. 모델 간에 일반 관계를 생성하고 QuerySet을 최적화하는 방법을 배웁니다. 신호로 작업하고 비정규화를 구현합니다. 장고 디버그 도구 모음을 사용해서 관련 디버그 정보를 얻습니다. 마지막으로, 이미지 조회수를 계산하기 위해 Redis를 프로젝트에 통합하고 Redis로 가장 많이 조회된 이미지의 순위를 생성합니다.
8장 온라인 상점 구축하기
온라인 상점을 만드는 방법을 살펴봅니다. 제품 카탈로그에 대한 모델을 빌드하고 장고 세션을 사용해서 쇼핑 카트를 생성합니다. 쇼핑 카트를 위한 콘텍스트 프로세서를 빌드하고 고객 주문을 관리하는 방법을 배웁니다 그리고 이 장에서는 Celery와 RabbitMQ를 사용해서 비동기 알림을 보내는 방법을 설명합니다. Flower를 사용해 Celery를 모니터링하는 방법도 배웁니다.
9장 결제 및 주문 관리하기
결제 게이트웨이를 스토어에 통합하는 방법을 설명합니다. Stripe Checkout을 통합하고 애플리케이션에서 비동기 결제 알림을 수신합니다. 관리 사이트에서 커스텀 뷰를 구현하고 주문을 CSV 파일로 내보내도록 관리 사이트를 커스터마이징할 수도 있습니다. PDF 인보이스를 동적으로 생성하는 방법도 배웁니다.
10장 온라인 상점 확장하기
쿠폰 시스템을 생성해서 카트에 할인을 적용하는 방법을 알아봅니다. 쿠폰 할인을 구현하기 위해 Stripe Checkout 연동 기능을 업데이트하고 주문에 쿠폰을 적용합니다. 마지막으로 Redis를 사용하여 일반적으로 함께 구매하는 제품을 저장하고 이 정보를 사용하여 제품 추천 엔진을 구축합니다.
11장 온라인 상점에 국제화 추가하기
프로젝트에 국제화를 추가하는 방법을 보여 줍니다. 번역 파일을 생성 및 관리하고 파이썬 코드와 장고 템플릿에서 문자열을 번역하는 방법을 배웁니다. Rosetta를 사용해서 번역을 관리하고 언어별 URL을 구현합니다. django-parler를 사용해서 모델 필드를 번역하는 방법과 ORM에서 번역을 사용하는 방법을 배우게 됩니다. 마지막으로 django-localflavor를 사용하여 현지화된 폼 필드를 생성합니다.
12장 e-러닝 플랫폼 구축하기
e-러닝 플랫폼을 만드는 과정을 안내합니다. 프로젝트에 픽스처(fixtures)를 추가하고 콘텐츠 관리 시스템을 위한 초기 모델을 생성합니다. 모델 상속을 사용해서 다형성 콘텐츠에 대한 데이터 모델을 생성합니다. 객체를 주문하는 필드를 작성해서 커스텀 모델 필드를 만드는 방법을 배웁니다. 또한 CMS에 대한 인증 뷰를 구현합니다.
13장 콘텐츠 관리 시스템 만들기
클래스 기반 뷰와 믹스인을 사용해서 CMS를 만드는 방법을 설명합니다. 장고 그룹 및 권한 시스템을 사용해서 뷰에 대한 접근을 제한하고 폼셋을 구현해 강좌 콘텐츠를 수정합니다. 또한 드래그 앤 드롭 기능을 만들고 JavaScript 및 장고를 사용해서 강좌 모듈과 해당 콘텐츠를 재정렬합니다.
14장 콘텐츠 렌더링과 캐시
강좌 카탈로그에 대한 공개 뷰를 구현하는 방법을 보여 줍니다. 학생 등록 시스템을 생성하고 강좌에서 학생 등록을 관리합니다. 강좌 모듈에 대해 다양한 유형의 콘텐츠를 렌더링하는 기능을 생성합니다. 장고 캐시 프레임워크를 사용해서 콘텐츠를 캐시하는 방법을 배우고, 프로젝트에 대한 Memcached 및 Redis 캐시 백엔드를 구성합니다. 마지막으로 관리 사이트를 사용해서 Redis를 모니터링하는 방법을 배웁니다.
15장 API 구축하기
장고 REST 프레임워크를 사용해서 프로젝트용 RESTful API를 구축하는 방법을 살펴봅니다. 모델의 시리얼라이저를 만들고 커스텀 API 뷰를 만드는 방법을 배웁니다. API 인증을 처리하고 API 뷰 권한을 구현합니다. API 뷰셋과 라우터를 빌드하는 방법을 배웁니다. 이 장에서는 requests 라이브러리를 사용해서 API를 사용하는 방법도 알려줍니다.
16장 채팅 서버 구축하기
장고 채널을 사용해 학생들을 위한 실시간 채팅 서버를 만드는 방법을 설명합니다. 웹소켓을 통해 비동기 통신에 의존하는 기능을 구현하는 방법을 배우게 됩니다. 파이썬으로 웹소켓 컨슈머를 생성하고 JavaScript로 웹소켓 클라이언트를 구현합니다. Redis를 사용해 채널 레이어를 설정하고 웹소켓 컨슈머를 완전히 비동기식으로 만드는 방법을 배웁니다.
17장 실서비스화
여러 환경에 맞는 설정을 생성하는 방법과 PostgreSQL, Redis, uWSGI, NGINX, Daphne를 사용해 프로덕션 환경을 설정하는 방법을 Docker Compose와 함께 보여줍니다. 그 후 HTTPS를 통해 프로젝트를 안전하게 서비스하는 방법과 장고 시스템 검사 프레임워크(system check framework)를 사용하는 방법을 배우게 됩니다. 이 장에서는 커스텀 미들웨어를 빌드하고 커스텀 관리 명령을 만드는 방법도 알려줍니다.