1

私はpython twistedの専門家ではありません。私の問題を解決してください。パスを試しているときにgetChildが呼び出されませんlocalhost:8888/dynamicchild。私のリソースにisLeafをFalseとして入れても。

私の理解によれば、試しlocalhost:8888たときに青いページが返されるはずですが、もちろんそれは起こっていますが、ステートメントを試したときはいつでもlocalhost:8888/somex「 getChild と呼ばれる」というステートメントを印刷する必要がありますが、今は起こっていません

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()
4

1 に答える 1

2

これは、getChild メソッドが呼び出される server.Site コンストラクターに送信するルート Resource であるためです。

代わりに次のようにしてみてください。

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()

「/」をリクエストすると、青色の背景が返され、それ以外は「赤」が返されるようになりました。

于 2013-02-08T11:16:07.020 に答える