簡體   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