開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python (プログラミング言語)
Head First Python (Paul Barry(著)、 O'Reilly Media )のChapter 9(Manage Your data: Handling input)、SHARPEN YOUR PENCIL(p.337)を解いてみる。
SHARPEN YOUR PENCIL(p.337)
コード(BBEdit, Emacs)
cgi-gin/generate_list.py
#!/usr/bin/env python3 #-*- coding: utf-8 import athletemodel import yate athletes = athletemodel.get_namesID_from_store() print(yate.start_response()) print(yate.include_header("NUAC's List of Athletes")) print(yate.start_form("generate_timing_data.py")) print(yate.para("Select an athlete from the list to work with:")) for each_athlete in sorted(athletes): print(yate.radio_button_id( "which_athlete", each_athlete[0], each_athlete[1])) print(yate.end_form("Select")) print(yate.include_footer({"Home": "/index.html"}))
cgi-gin/generate_data.py
#!/usr/bin/env python3 #-*- coding: utf-8 import cgi import json import athletemodel import yate athletes = athletemodel.get_namesID_from_store form_data = cgi.FieldStorage() athlete_id = form_data['which_athlete'].value athlete = athletemodel.get_athlete_from_id(athlete_id) print(yate.start_response('application/json')) print(json.dumps(athlete))
cgi-gin/generate_names.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- import athletemodel import yate import json athletes = athletemodel.get_namesID_from_store() print(yate.start_response('application/json')) print(json.dumps(sorted(athletes)))
cgi-gin/generate_data.py
#!/usr/bin/env python3 #-*- coding: utf-8 import cgi import json import athletemodel import yate athletes = athletemodel.get_namesID_from_store form_data = cgi.FieldStorage() athlete_id = form_data['which_athlete'].value athlete = athletemodel.get_athlete_from_id(athlete_id) print(yate.start_response('application/json')) print(json.dumps(athlete))
cgi-gin/generate_list2.py
#!/usr/bin/env python3 #-*- coding: utf-8 import athletemodel import yate athletes = athletemodel.get_namesID_from_store() print(yate.start_response()) print(yate.include_header("NUAC's List of Athletes")) print(yate.start_form("generate_data.py")) print(yate.para("Select an athlete from the list to work with:")) for each_athlete in sorted(athletes): print(yate.radio_button_id( "which_athlete", each_athlete[0], each_athlete[1])) print(yate.end_form("Select")) print(yate.include_footer({"Home": "/index.html"}))
サーバー
入出力結果(Terminal, IPython)
$ ./simple_httpd.py Starting simple_httpd on port: 8080 127.0.0.1 - - [12/Jul/2014 17:38:09] "GET /cgi-bin/generate_list.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:38:12] "POST /cgi-bin/generate_timing_data.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:38:13] "GET /cgi-bin/generate_list.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:38:16] "POST /cgi-bin/generate_timing_data.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:38:17] "GET /cgi-bin/generate_list.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:38:19] "POST /cgi-bin/generate_timing_data.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:38:22] "GET /cgi-bin/generate_list.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:38:28] "GET /cgi-bin/generate_list2.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:38:29] "GET /cgi-bin/generate_list2.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:38:33] "POST /cgi-bin/generate_data.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:39:02] "GET /cgi-bin/generate_names.py HTTP/1.1" 200 - 127.0.0.1 - - [12/Jul/2014 17:39:02] "GET /cgi-bin/generate_names.py HTTP/1.1" 200 - C-c C-cTraceback (most recent call last): File "./simple_httpd.py", line 10, in <module> httpd.serve_forever() File "/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/socketserver.py", line 236, in serve_forever poll_interval) File "/opt/local/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/socketserver.py", line 154, in _eintr_retry return func(*args) KeyboardInterrupt $
0 コメント:
コメントを投稿