[英]What is the purpose of Twisted's isLeaf attribute?
我发现了以下Twisted请求处理程序的示例。 我不清楚isLeaf
属性的作用。 为什么要在资源上设置它?
from twisted.internet import reactor
from twisted.web.server import Site
from twisted.web.resource import Resource
class RequestHandler(Resource):
isLeaf = True
def render_GET(self, request):
request.setResponseCode(200)
return "HelloWorld"
if __name__ == '__main__':
resource = RequestHandler()
factory = Site(resource)
reactor.listenTCP(8001, factory)
reactor.run()
从https://www.safaribooksonline.com/library/view/twisted-network-programming/9781449326104/ch04.html :
isLeaf实例变量描述资源是否将具有子代。 如果我们没有更多的工作...,则仅呈现叶子资源
例:
/index.html
是典型的叶子 /users/joe
端点,则/users/
不会 请参阅twisted.web.resource.IResource.isLeaf文档-
指示此IResource实现者是否为“叶节点”。 如果为True,则不会在此资源上调用getChildWithDefault。
Twisted查找要渲染的资源的方式是将路径分成多个段,然后在根目录上调用“ getChildWithDefault”,然后再调用根目录等等。 如果它用完了段,或者找到了“叶子”(即isLeaf = True)资源,它将停止。
届时,它将在资源上调用render方法。 在叶资源中,渲染器通常会希望查看“ request.postpath”属性-隐藏的是没有用完查找资源的段列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.