Problems with my BaseHTTPServer
class Weblog(BaseHTTPServer.BaseHTTPRequestHandler):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | 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>%(title)s</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('Add a post') self.wfile.write('<table><tr><th>Date</th><th>Title</th></tr>%(lines)s</tables>' %content) |
当我在命令行上运行它时,它会给出以下错误:
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
我在这里做错什么了吗?
若要在当前类中调用某些内容,应使用self.methodu name()。
1 2 3 4 5 6 7 8 | 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() |