2

我正在运行以下代码;它来自 Twisted Framework 的示例列表,是一个网络服务器。

from twisted.web import server, resource
from twisted.internet import reactor

class HelloResource(resource.Resource):
    isLeaf = True
    numberRequests = 0

    def render_GET(self, request):
        self.numberRequests += 1
        request.setHeader("content-type", "text/plain")
        arg = request.args
        q = arg['q']

        #Added for debugging
        for key, value in arg.iteritems():
            print key, value

        return "I am request #" + str(self.numberRequests) + " " + q[0] + "\n"

reactor.listenTCP(8080, server.Site(HelloResource()))
reactor.run()

执行:

[user@localhost pytwist]$ python twi.py

浏览器网址:

http://localhost:8080/?q=test

但是,我在控制台上收到以下KeyError异常:

File "twi.py", line 12, in render_GET
q = arg['q']
exceptions.KeyError: 'q'

然而,浏览器给出了预期的输出:

I am request #3 test

此外,控制台正在正确显示代码的调试部分:

q ['af']

如果输出正确并且密钥正确存在,那么可能是什么错误?请注意,我已经尝试过dict.get()方法,但问题仍然存在。

4

2 回答 2

5

这可能是因为您的浏览器正在发出两个请求。第二个请求可能是针对favicon.ico文件的,这里它不发送q参数。

尝试打印请求的 URL。

有关的

于 2012-08-27T09:54:58.137 回答
0

我注意到一些奇怪的事情:您的代码提到q = arg['q']了 ,而错误消息p = arg['q']却相反。这里是不是不匹配,或者你正在执行好的代码?

于 2012-08-27T09:56:14.333 回答