BaseHTTPRequestHandlerのサブクラスに独自の関数を作成しようとしています。
クラスWeblog(BaseHTTPServer.BaseHTTPRequestHandler):
def do_HEAD(self):
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
def do_GET(self):
"""Respond to a GET request."""
if self.path == '/':
do_index()
elif self.path == '/timestamp':
do_entry()
elif self.path == '/post':
do_post_form()
def do_index(self):
'''If the PATH_INFO is '/' then the weblog index should be presented'''
self.send_response(200)
self.send_header("Content-type", "text/html")
self.end_headers()
post = None
content = {}
line = '<tr id="%(timestamp)s"><td>%(date)s</td>'
line += '<td><a href="%(timestamp)s">%(title)s</a></td></tr>'
for timestamp in weblog.list_posts():
post = storage.retrieve_post(timestamp)
if content.has_key('lines') == false:
content['lines'] = line %post
else:
content['lines'] += line %post
self.wfile.write('<a href = "post">Add a post</a>')
self.wfile.write('<table><tr><th>Date</th><th>Title</th></tr>%(lines)s</tables>' %content)
commnadlineで実行すると、次のエラーが発生します。-
('127.0.0.1'、59808)からのリクエストの処理中に例外が発生しました
トレースバック(最後の最後の呼び出し):
ファイル "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py"、行281、_handle_request_noblock
self.process_request(request、client_address)
ファイル "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py"、行307、process_request
self.finish_request(request、 client_address)
ファイル "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py"、行320、finish_request
self.RequestHandlerClass(request、client_address、self)
ファイル "/ Library / Frameworks / Python.framework / Versions / 2.6 / lib / python2.6 / SocketServer.py "、行615、の__init__
self.handle()
ファイル "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/BaseHTTPServer.py"、329行目、手元に
あるself.handle_one_request()
ファイル"/Library/Frameworks/Python。 Framework / Versions / 2.6 / lib / python2.6 / BaseHTTPServer.py "、323行目、handle_one_request
method()
ファイル" weblog.py "、34行目、do_GET
do_index()
NameError:グローバル名'do_index'が定義されていません