资源的getChild没有在twisted中调用

时间:2013-02-08 07:38:52

标签: python http twisted

我不是python扭曲的专家,请帮我解决我的问题, 当我尝试路径localhost:8888/dynamicchild时,getChild没有调用。 甚至把isLeaf放在我的资源中也是假的。

根据我的理解,当我尝试localhost:8888它应该返回蓝页当然会发生但是当我尝试localhost:8888/somex时,应该在屏幕上打印语句print“getChild called”但是现在它没有发生

from twisted.web import resource 

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

class MyResource(resource.Resource):
    isLeaf=False
    def render(self,req):
        return "<body bgcolor='#00aacc' />"

    def getChild(self,path,request):
        print " getChild called "


r=resource.Resource()
r.putChild('',MyResource())
f=server.Site(r)
reactor.listenTCP(8888,f)
reactor.run()

1 个答案:

答案 0 :(得分:2)

那是因为它是您发送给server.Site构造函数的根资源,其getChild方法被调用。

尝试这样的事情:

from twisted.web import resource 

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

class MyResource(resource.Resource):
    isLeaf=False

    def __init__(self, color='blue'):
        resource.Resource.__init__(self)
        self.color = color

    def render(self,req):
        return "<body bgcolor='%s' />" % self.color

    def getChild(self,path,request):
        return MyResource('blue' if path == '' else 'red')

f=server.Site(MyResource())
reactor.listenTCP(8888,f)
reactor.run()

请求'/'现在将返回蓝色背景,而'red'将返回其他所有内容。