繁体   English   中英

Twisted的isLeaf属性的目的是什么?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM