Один идиоматический c способ использования нескольких сегментов пути с помощью абстракции ресурса Twisted Web (на основе которой создается абстракция ресурса txThings) состоит в том, чтобы иметь более одного ресурса. Ресурсы, соответствующие более ранним частям пути, собирают состояние и передают его ресурсам, соответствующим более поздним частям пути.
Например
from twisted.web.resource import Resource
class Root(Resource):
def getChild(self, name, request):
return FirstSegment(name)
class FirstSegment(Resource):
def __init__(self, first):
self.first = first
Resource.__init__(self)
def getChild(self, name, request):
return SecondSegment(self.first, name)
class SecondSegment(Resource):
def __init__(self, first, second):
self.first = first
self.second = second
Resource.__init__(self)
def render_GET(self, request):
return "Handling {first}/{second}".format(
first=self.first,
second=self.second,
)
root = Root()
site = Site(root)
...
Другой вариант - использовать «лист» ресурсы, которые останавливают прохождение, даже если в запросе больше сегментов пути:
from twisted.web.resource import Resource
class HandleItAll(Resource):
isLeaf = True
def render_GET(self, request):
return "Handling {path}".format(path="/".join(request.postpath))
root = HandleItAll()
site = Site(root)
...