【发布时间】:2011-03-29 07:00:37
【问题描述】:
我正在尝试在 BaseHTTPRequestHandler 的子类中创建自己的函数
类博客(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)
当我在命令行上运行它时,它给了我以下错误:-
处理来自 ('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
方法()
文件“weblog.py”,第 34 行,在 do_GET
do_index()
NameError:未定义全局名称“do_index”
我在这里做错了吗?
【问题讨论】:
-
值得注意的是,子类化 BaseHTTPServer不是在 python 中创建博客应用程序的严肃方法:请改用 pylons/turbogears/django 等。这些旨在使用可安全暴露在互联网上的真实网络服务器。
-
啊,是的,我意识到这一点,但这只是我必须按照规范完成的任务。不过谢谢你的评论
标签: python basehttpserver