我不是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()
答案 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'将返回其他所有内容。