파이썬으로 쉽고 재미있게 웹 프로그래밍을 시작하세요!

《파이썬 웹 프로그래밍: 플라스크를 이용한 쉽고 빠른 웹 개발》은 많은 개발자들에게 인기를 얻고 있는 파이썬과 마이크로 웹 프레임워크인 플라스크를 활용해 쉽고 재미있게 웹 애플리케이션을 개발하는 방법을 안내합니다. 파이썬이나 웹 프로그래밍을 잘 모르더라도 프로그래밍에 대한 약간의 경험만 있다면 이 책에서 제시하는 예제와 설명을 통해 자연스럽게 웹 프로그래밍의 재미를 느낄 수 있을 것입니다.

★ 이 책에서 다루는 내용 ★

  • 파이썬 기반 마이크로 웹 프레임워크인 플라스크의 활용
  • 애플리케이션 개발을 위한 다양한 라이브러리(SQLAlchemy, PIL, Bootstrap, GMaps.js 등)
  • 트위터와 앱 애플리케이션 연동
  • 엔진엑스와 아파치 웹서버를 이용한 애플리케이션 운영
  • 레디스를 이용한 독립된 세션 관리
  • 구글 앱 엔진에서의 플라스크 활용

플라스크는 강력한 기능을 제공하지만 쉽게 배울 수 있는 파이썬의 특징을 그대로 닮아 있다. 하지만 세상에 만병통치약은 없는 법! 플라스크 역시 ‘은탄환’은 아니다. 플라스크는 웹 개발에 필요한 핵심적인 기능을 제공하지만 추가적으로 필요한 기능은 개발자가 직접 해당 모듈을 찾아 통합해야 한다. 그리고 뷰 함수(view function)라고 하는 기본 호출 단위를 제외하면 정해진 개발 가이드라인이 없어서 개발 환경에 맞게 프레임워크를 적절히 설계하고 구조화할 필요도 있다.

그럼에도 기존 웹 개발에 대한 대안으로 파이썬과 플라스크는 굉장히 매력적이다. 기존 웹 개발을 경험해본 개발자에게는 개발 도메인에 따라 좀 더 유연한 개발 환경을 적용할 필요가 있을 때 사용할 대안으로 사용하기에 좋다. 또한 웹 개발 경험이 없더라도 단지 몇 시간만 투자하면 간단한 웹 애플리케이션을 개발할 수 있을 정도로 이해하기 쉽고 사용하기 편리하다.

이 책은 기본적인 파이썬 문법을 아는 초보자를 대상으로 한다. 하지만 파이썬을 사용해본 적이 없더라도 파이썬 기본서나 인터넷에 있는 간단한 강좌를 한번 살펴보면 어렵지 않게 내용을 이해할 수 있을 것이다.

이 책은 총 3부로 다음과 같이 구성돼 있다.

 1부에서는 ‘파이썬 웹 프로그래밍’을 시작하는 내용으로 파이썬 및 플라스크를 소개하고 플라스크의 기본 기능을 비롯해 간단한 예제 프로그램인 ‘미니 트윗’을 제작한다.

 2부에서는 1부에서 다룬 내용을 바탕으로 실제 웹 애플리케이션 개발에서 자주 사용되는 여러 개발 도구에 더해 ‘포토로그’라는 예제 프로젝트를 통해 실전에서 사용할 수 있는 기능에 관해 다룬다.

 3부에서는 2부에서 개발한 ‘포토로그’ 애플리케이션을 아파치와 엔진엑스 웹 서버에 배포하고 실행하는 법을 살펴본다.

 부록에서는 2부에서 개발한 ‘포토로그’에서 세션 서버로 사용할 수 있는 메모리 저장소인 레디스(Redis)를 살펴보고 파이썬 웹 애플리케이션을 클라우드 서비스 중 하나인 구글 앱 엔진(Google App Engine)에 배포한다.

파이썬으로 이제 막 웹 개발을 시작하거나 기존 웹 개발 환경의 대안을 찾고 있는 개발자들에게 이 책이 더 높이 뛰어오를 수 있게 도와주는 발판이 됐으면 좋겠다.

-- 저자 서문 중에서

주성식

새로운 것을 찾아내고 가까운 곳에 적용해 보기를 좋아하는 탐구자. 정보의 공유를 지적 노동자의 최고 미덕으로 생각하고 있다. 지미 웨일스가 설립한 위키피디아처럼 사회적 가치에 공헌할 수 있는 서비스를 만들어 낼 수 있기를 꿈꾼다. 늘 배우는 것에 주저하지 않고 배움 앞에 겸손한 학생이 되고 싶다. 위키북스의 『데브옵스: 개발자, QA, 관리자가 함께 보는 리눅스 서버 트러블슈팅 기법』을 번역했다.

홍성민

풍기는 외모나 이미지와 달리 서울 토박이로 컴퓨터를 전공했으며 담배도 피우지 않는다. 웹 메일을 시작으로 SSO/EAM 솔루션을 개발했으며 여러 SI/SM 프로젝트에서 소프트웨어 아키텍트로 시스템 구축과 성능/문제 해결에 참여했고, 최근에는 닷넷으로 개발된 MDM(Mobile Device Management) 솔루션을 자바 기반의 오픈소스 소프트웨어로 전환했다. 현재는 오픈소스 소프트웨어와 파이썬으로 쉽게 웹 애플리케이션을 개발하는 방법에 관심이 많다. 번역서로 『데브옵스: 개발자, QA, 관리자가 함께 보는 리눅스 서버 트러블슈팅 기법』이 있다.

  • [PART 01] 파이썬 웹 애플리케이션 시작하기
    • ▣ 1장: 파이썬과 웹 애플리케이션
      • 1.1 파이썬
        • 인터프리터 기반의 객체 지향(Object-oriented) 프로그래밍 언어
        • 플랫폼 독립적인 언어 (Platform Independent)
        • 유연한 확장(Extendible)
        • 동적 타이핑(Dynamic Typing)
        • 리플렉션(Reflection)
      • 1.2 웹 애플리케이션 개발 동향
      • 1.3 풀 스택 프레임워크 vs. 마이크로 프레임워크
      • 1.4 대표적인 마이크로 프레임워크
        • 시나트라(루비)
        • 스칼라트라(Scalatra, Scala)
        • 보틀(Bottle, 파이썬)
      • 1.5 플라스크(Flask)
        • 플라스크의 특징
        • 플라스크 웹 애플리케이션 살펴보기
        •  
    • ▣ 2장: 개발 환경 설정
      • 2.1 설치 개요
      • 2.2 파이썬 설치
      • 2.3 플라스크 설치
      • 2.4 통합개발 환경(IDE) 설치
        • 이클립스 설치
        • PyDev 설치
      • 2.5 깃허브(Github) 저장소 연결
        • 깃(Git)
        • 깃허브(Gitbub) 로컬로 예제 소스 가져오기
      • 2.6 플라스크 애플리케이션 실행
      •  
    • ▣ 3장: 플라스크 시작하기
      • 3.1 첫 플라스크 애플리케이션, “Hello Flask!”
      • 3.2 라우팅
      • 3.3 요청과 응답
      • 3.4 쿠키와 세션
      • 3.5 정적 파일과 템플릿
        • 주석
        • 공백
        • 이스케이핑
        • for
        • if
        • macro
        • import
        • extends
        • include
      • 3.6 에러와 로깅
      • 3.7 로컬 서버 실행
      •  
    • ▣ 4장: 작은 트위터, 미니 트윗(minitwit)
      • 4.1 미니 트윗 개요
      • 4.2 데이터베이스처리
      • 4.3 뷰 함수 구현
        • 사용자 등록
        • 로그인/로그아웃
        • 트윗 등록
        • 팔로우/언팔로우
        • 타임라인
      • 4.4 정적 파일과 템플릿
      •  
  • [PART 02] 파이썬 웹 애플리케이션 만들기
    • ▣ 5장: 추억을 기록한다, 포토로그(Photolog)
      • 5.1 포토로그 개요
      • 5.2 클라이언트 측 구조
        • 부트스트랩(bootstrap)
        • 폰트 어썸(Font Awesome)
        • jQuery 자바스크립트 라이브러리
        • exif.js와 binaryajax.js
        • gmaps.js
      • 5.3 애플리케이션 레이아웃
      • 5.4 서버 측 구조
        • MVC(Model-View-Controller)
        • 패키지 초기화
        • 로깅
        • SQLAlchemy
        • 블루프린트
        • 세션
        • WTForms
      • 5.5 필요한 패키지 설치
      •  
    • ▣ 6장: 사용자 관리와 로그인
      • 6.1 사용자 등록
      • 6.2 사용자 정보 변경
      • 6.3 사용자 탈퇴
      • 6.4 로그인/로그아웃
      •  
    • ▣ 7장: EXIF분석과 사진업로드
      • 7.1 EXIF 분석과 입력 값 처리
      • 7.2 지도에 위치 정보 표시
      • 7.3 사진 및 데이터 저장
      •  
    • ▣ 8장: 포토로그 사진 보여주기
      • 8.1 사진 목록 출력
      • 8.2 페이징
      • 8.3 수정/삭제
      • 8.4 검색
      • 8.5 지도에 위치 출력
      •  
    • ▣ 9장: SNS 연동
      • 9.1 트위터 애플리케이션 등록
        • Application Details
        • OAuth Settings
      • 9.2 간단한 트위터 클라이언트 만들기
      • 9.3 트위터 연동 모듈 개발
      • 9.4 트윗 결과 메시지 출력
      • 9.5 트위터 연동 확인
      •  
  • [PART 03] 파이썬 웹 애플리케이션 서비스하기
    • ▣ 10장. 아파치로 포토로그 서비스하기
      • 10.1 아파치 웹 서버(Apache HTTP Server)
      • 10.2 mod_wsgi 확장 모듈
      • 10.3 아파치와 mod_wsgi 설치
      • 10.4 아파치와 mod_wsgi 설정
      • 10.5 아파치로 포토로그 실행
      •  
    • ▣ 11장: 엔진엑스로 파이썬 웹 애플리케이션 서비스하기
      • 11.1 엔진엑스 웹 서버(Nginx Web Server)
      • 11.2 uWSGI애플리케이션서버
      • 11.3 엔진엑스와 uWSGI 설치
      • 11.4 엔진엑스와 uWSGI 설정
      • 11.5 엔진엑스로 포토로그 실행
      •  
  • APPENDIX 01: 레디스(Redis) 살펴보기
    • 1.1 개요
    • 1.2 특징
      • 다양한 데이터형(Data Type)
      • 영속성(Persistence)
      • 복제(Replication)
      • 분할(Partitioning)
      • 만료(Expiration)
    • 1.3 OS별 설치
      • 윈도우
      • 맥OS/리눅스
    • 1.4 포토로그 애플리케이션에 적용하기
    •  
  • ▣ APPENDIX 02: 구글 앱 엔진 사용하기
    • 2.1 개요
    • 2.2 구글 앱 엔진 개발 환경
    • 2.3 앱 엔진을 위한 플라스크 프로젝트 구성
    • 2.4 구글 앱 엔진에 배포하기
  • p. 43, 그림 2-15

    가상 환경 활성화 그림만 있고, 설명 누락 --> 'cd venv/scripts'라고 입력해 가상환경 실행 스크립트가 있는 디렉토리로 이동하고 'activate.bat'라고 입력해 실행 스크립트를 실행한다(맥이나 리눅스에서는 'source activate'). 가상환경을 종료할 때는 'deactivate.bat'을 입력하면 된다.

  • p. 69, 소스 ch03/test_url_for.py

    Flask(name) 누락 --> Flask(name) 추가

  • p. 71, 세 번째 단락 세 번째 줄

    hello_flaks.py --> hello_flask.py

  • P. 75, hello_flask.py from flask import Flask -> from flask import Flask, render_template

  • p. 82, 10번째 줄 코드

    <% from 'input.html' import input %> --> {% from 'input.html' import input %}

  • p. 82, 17번째 줄 코드

    <% macro <매크로 이름>(매크로 인자, …) %} --> {% macro <매크로 이름>(매크로 인자, …) %}

  • p. 83, 5번째 줄 코드

    <% from 'input.html' import input %> --> {% from 'input.html' import input %}

  • p. 85, 첫 번째 예제

    @app.errorhandler(404) def page_not_found(error): app.logger.error(error) # 이 줄을 들여쓰기 return render_template('page_not_found.html'), 404

  • p. 86, 첫 번째 줄

    리턴값을 “HelloFlask Again!”이라고 --> 리턴값을 “Hello Flask Again!”이라고

  • p. 96

    if __name__ == '__main__'의 app.run() 들여쓰기

  • p. 144, 2~3번째 줄

    username과 email은 둘 다 문자열이고 유일한 값을 갖게 설정돼 있다.

    --> username과 email은 둘 다 문자열이지만, username은 유일한 값을 가지고 email은 중복을 허용한다.

  • p. 158, 예제 소스 경로

    ch05/photolog/photolog/templates/l_formhelpers.html --> ch05/photolog/photolog/templates/_formhelpers.html

  • p. 171, 예제 소스 경로

    ch05/photolog/photolog/templates/register.html --> ch05/photolog/photolog/templates/regist.html

  • p. 265

    AFS --> ASF

    • Apache Software Foundation의 약어이므로 ASF

예제코드 관련 GitHub 페이지


엮인 글

엮인 글 주소: http://wikibook.co.kr/flask/trackback/