- summarized by 전승일(2014/11/09)
- source code: http://www.headfirstlabs.com/books/hfpython/
- source code: $ git clone https://github.com/sijeon/HeadFirstPython
- support site: http://python.itcarlow.ie
- 모든 사람이 감독의 데이터를 보고 싶어 하네요!
-
여러분의 프로그램은,
* 여러분의 웹사이트를 접속할 수 있는 사람은 누구나 사용할 수 있고 * 여러분의 웹 서버 한 곳에만 놓으면 되고 * 새로운 기능이 필요할 때 업데이트하기도 쉽습니다
-
웹 기반 애플리케이션: 웹앱 (참고: 252 ~ 253쪽)
- 무언가 보여 주는 멋지고 친근한 홈페이지
- 모든 선수의 이름을 보여주고 선태할 수 있는 페이지
- 선택한 선수의 기록을 보여주는 페이지
-
이것들을 만드는 가장 좋은 방법은 무엇일까? 다양하다...
-
좋은 웹앱은 MVP 패턴을 따른다
* Model : 웹앱의 데이터를 저장하거나 처리하는 코드 * View : 웹앱의 UI를 만들고 출력하는 코드 * Controller : 웹앱의 뷰와 모델을 연결하고, 앱의 논리 처리를 담당하는 코드
-
get_coach_data() 기 구현
* 텍스트 파일을 AthleteList 객체로 변환
-
put_to_store() 구현
* file 목록을 받아 각 file별로 get_coach_data()를 호출하여 AthleteList를 결과로 받아서, * 전체 선수 데이터를 선수 이름에 의해 색인된 dictionary로 변환하고, * 이를 pickling 해서 파일에 저장
-
get_from_store() 구현
* pickle에 저장된 데이터를 웹앱에 dictionary 객체로 불러들임
-
실습
webapp-ch07/cgi-bin/athletelist.py 와 이전 6장의 마지막 코드 비교 webapp-ch07/cgi-bin/athletemodel.py 확인 webapp-ch07/cgi-bin/athletelist_test.py로 개별 동작 시험 해 보기
- HTML 관련서: Head First HTML
- HTML helper module: yate.py, yate_test.py
- 폴더 구조: 270쪽 참조
- Common Gateway Interface
- web server에서 cgi를 활성화 해야 함
- 간단한 웹서버: simple_httpd.py
- 동적 컨텐츠 생성: generate_list.py
-
Form Data를 읽고 동적 컨텐츠 생성하기 - CGI scipt: generate_timing_data.py
import cgi form_data = cgi.FieldStorage() athlete_name = form_data['which_athlete'].value
-
CGI 스크립트에서 예외가 발생하면 Python program은 에러 메시지를 STDERR(표준 에러 출력 장치)로 보냄
-
CGI 메커니즘은 표준 출력 장치로 보낸 메시지만 원하기 때문에 에러 메시지는 버림
-
CGI 에러를 추적할 수 있는 기능
import cgitb cgitb.enable()
-
class property : class method를 class attribute 처럼 사용하게 해 주는 방법
@property def top3(self): ... athletes[name].top3