I am trying to create my own functions in the subclass of BaseHTTPRequestHandler as such
class 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)
When I run it on the commnadline it gives me the following error:-
Exception happened during processing of request from ('127.0.0.1', 59808)
Traceback (most recent call last): File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 281, in _handle_request_noblock self.process_request(request, client_address) File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 307, in process_request self.finish_request(request, client_address) File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 320, in finish_request self.RequestHandlerClass(request, client_address, self) File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/SocketServer.py", line 615, in__init__
self.handle() File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/BaseHTTPServer.py", line 329, in hand self.handle_one_request() File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/BaseHTTPServer.py", line 323, in handle_one_request method() File "weblog.py", line 34, in do开发者_运维知识库_GET do_index() NameError: global name 'do_index' is not defined
Am I doing something wrong here?
To call something in the current class, you should use self.method_name()
def do_GET(self):
"""Respond to a GET request."""
if self.path == '/':
self.do_index()
elif self.path == '/timestamp':
self.do_entry()
elif self.path == '/post':
self.do_post_form()
精彩评论