날로 먹는 Django 웹프레임워크 강좌, 여는 글

hello world

2008년 6월 1일부터 8월 10일까지 저는 Python과 Django로 웹 게시판을 만드는 강좌인 “날로 먹는 Django 웹 프로그래밍”을 연재했습니다. 6년이 훌쩍 지났지만 여전히 저 강좌를 보러 제 블로그에 오시는 분이 참 많습니다. 구글에서 Django 강좌를 검색하면 제 강좌가 맨 위에 나오기도 하고 국내 포털 서비스에서도 Django 강좌는 제 블로그가 나오거나 제 강좌를 그대로 담아간 곳이 나오기도 하니, Django 한국어 강좌 중에선 꽤 유명한가 봅니다.

부담을 안 느낀 건 아닙니다. Django 최신 버전에서는 다소 문제가 있기도 하고, 윈도우즈처럼 제가 사용하지 않는 환경에 대해 질문하신 분을 도와드리지도 못 했거든요. 적당한 시기에 잊혀지면 마음이 편할텐데, 여전히 두루 읽히며 여러 입문자가 고생하고 있을 모습이 눈에 선하니 미안한 마음이 들곤 했습니다.

그래서 6년 만에 후속 강좌를 연재하려 합니다. 이름은 “날로 먹는 Django 웹 프레임워크”입니다. 지난 강좌는 Django 웹 프레임워크로 웹 프로그래밍을 입문하려는 사람을 대상으로 했다면, 이번 강좌는 Django 자체를 좀 더 들여다보고 활용해보는 내용을 담을 예정입니다. 그래서 이번 후속 강좌에선 웹 프로그래밍을 조금이라도 해봤거나 Django, Rails 같은 웹 프레임워크로 hello world라도 출력해본 분을 대상으로 합니다.

연재 계획

8월 18일에 연재를 시작하며 내용에 따라서 10~14일에 한 회씩 게재하도록 최선을 다할 겁니다. 지난 강좌는 일주일에 한 회씩 연재했는데 정말 힘들더군요.

연재는 제 블로그에 하며 소스 코드는 GitHub에서 관리합니다. 강좌 본문도 GitHub에서 관리하는데, 원문을 사본으로 담는 역할이며 피드백을 주고 받거나 서식이 적용된 원본은 제 블로그에 게재됩니다. (그래서 강좌 본문을 통채로 복사해서 올리시지 않는 게 낫습니다)

제 개발 환경인 Mac OS X를 기반으로 하기 때문에 윈도우즈나 리눅스 등 다른 OS를 쓰시는 분은 좀 더 수고하셔야 할 지도 모릅니다. 다행히 인터넷에는 각 환경 별로 자신의 지식과 경험을 공유한 고마운 사람이 무척 많습니다.

각 연재분에는 마지막 수정일시가 표시됩니다. 여러분이 피드백을 제 블로그에 게재된 강좌에 남겨 주시면 참조하여 반영하도록 할 것이며, 그때마다 수정일시도 변경됩니다.

이번 강좌에서는 instagram 같은 웹 서비스를 만들 겁니다. 웹 게시판이나 블로그를 만드는 자료는 워낙 많아서 다른 걸 만들고 싶었는데, 웹 게시판이나 블로그처럼 다양한 구현을 경험할 수 있고 실용성도 있을 것 같아 선택했습니다.

왜 Django 웹 프레임워크 강좌인가?

이번 강좌 연재를 위해 사전 조사를 하던 중에 Django는 이미 덩치가 커서 초보자나 입문자가 강좌로 익히기엔 부담스럽지 않겠냐는 의견을 받았습니다. Flask는 아주 가볍고 작은 웹 프레임워크이어서 웹 프레임워크를 사용하여 웹 프로그래밍을 하는 학습 목표에 집중하기에 좋지 않겠냐는 것이지요.

제가 Django를 처음 접했던 0.96 버전에도 많은 기능이 있었는데, 최근 정식 버전인 1.6엔 더 많은 기능이 포함되어 있습니다. 강좌를 준비하며 목표 대상을 먼저 만들어 봤는데, Django가 프로젝트를 잘 만들 수 있도록 저는 교통 정리만 하는 기분이 들 정도로 많은 기능이 있습니다. 이래서는 프로그래밍을 제대로 학습하지 못 할 것 같고 오류와 같은 문제가 생기면 자칫 미로에 빠져 길을 잃을 것 같아서 Django를 도구로 쓸 지 고민하기도 했습니다.

결국 Django를 선택했습니다. 이유는 오랜 시간 많은 사람에게 사랑 받으며 사용되고 있고, 그래서 수많은 질문과 답변, 코드 조각과 유용한 구현체(library 등)가 존재하기 때문입니다. 제 강좌에서 부족한 부분은 인터넷에서 얼마든지 채우실 수 있습니다. 윈도우즈에서 MySQL를 설치했는데 안 된다고요? 윈도우즈에 MySQL을 설치해본 지 6년도 훌쩍 넘은 제게 질문을 하는 것 보다는 인터넷에서 오류 문구 등으로 답변을 찾는 게 훨씬 빠르고 유용할 것입니다.

마찬가지 이유로 JavaScript 라이브러리는 jQuery를 사용할 것이며, 다른 도구도 같은 기준으로 선택할 것입니다.

다룰 내용과 다루지 않을 내용

저는 이번 강좌에서 Djang 공식 문서에서 다루는 내용 전반을 두루 활용하여 서비스를 만들 겁니다. 또 우리가 만든 기능을 다른 오픈 소스 라이브러리로 바꿔보기도 할 겁니다. 하지만 최대한 Django가 제공하는 기능을 활용하는 것이 목표입니다.

하지만 Django 웹 프레임워크 범위를 넘는 내용은 다루지 않을 예정입니다. Apache나 NGINX에 우리가 만든 Django 프로젝트를 올리는 내용은 다루지만, Apache나 NGINX 설정이나 최적화 방법 등은 다루지 않습니다. 코딩 작업에 필요한 도구를 소개하지만 그 도구를 사용하는 방법은 다루지 않습니다. Django로 작동하는 기능을 구현하는 데 집중하지만 좋은 Python 코드나 최적화 된 알고리즘을 다루진 않습니다.

저작권 및 재배포 금지

“날로 먹는 Django 웹 프레임워크” 강좌는 제 저작물이며, 제가 직접 게재하는 곳을 제외한 그 어떠한 곳도 무단으로 배포해서는 안 됩니다. 무단배포를 막는 이유는, 제가 강좌 내용을 수정하더라도 무단으로 내용을 담아가 외부에 게재된 자료엔 반영할 수 없어서 자칫 틀리거나 문제가 있는 내용이 방치될 수 있기 때문입니다.

저는 블로그를 운영하는 10년 동안 각 글의 고유주소(permalink)를 유지하려고 많이 신경써 왔습니다. 일부 첨부 파일이 누락되는 경우는 있지만, 글 본문 자체는 10년 넘게 동일한 주소로 접근할 수 있으며, 글 주소가 바뀌어도 예전 주소로 접근할 수 있습니다. 더구나 이번 강좌는 사본을 GitHub에도 남겨 놓을 겁니다. 그러니 제 블로그에 게재된 연재 글의 주소를 연결(link)하기만 해주시길 바랍니다. 여러분께서 제 강좌를 악용할 목적을 갖고 있지 않는 한, 외부 공간에 무단 배포할 이유는 전혀 없습니다. 오히려 제가 직접 게재하고 관리하는 곳에 방문하여 강좌를 보는 것이 이득입니다. :)

예고를 마치며

이렇게 예고 했으니 이제 정말 연재를 시작할 수 밖에 없게 됐네요. 어느 정도 길이가 될 지 모르겠지만 열심히 연재해 보겠습니다. :)

날로 먹는 Django 웹프레임워크 강좌 목차