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