Url 如何在Twisted框架中获取双路径变量?
我想要两个路径变量。url模式如下所示:Url 如何在Twisted框架中获取双路径变量?,url,twisted,path-variables,Url,Twisted,Path Variables,我想要两个路径变量。url模式如下所示: http://<host>:<port>/<path_var_1>/<path_var_2> http://:// 其中路径变量1和路径变量2是动态的。我可以按指示选择一个,但如何才能获得两个或更多?使用Twisted Web的资源抽象(txThings资源抽象似乎是基于此构建的)的多路径段的一种惯用方法是拥有多个资源。对应于路径早期部分的资源收集状态并将其传递给对应于路径后期部分的资源 比如说 fro
http://<host>:<port>/<path_var_1>/<path_var_2>
http://://
其中路径变量1和路径变量2是动态的。我可以按指示选择一个,但如何才能获得两个或更多?使用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)
...
我想你用的是扭曲的网络?资源API呢?到目前为止你试过什么吗?一次消费两段而不是一段,你想要达到的目标是什么?@Paul,很抱歉迟到了。实际上,我在为我的一个项目使用CoAP协议。对于这个项目,我使用的是
txThings
,它构建在TwistedFramework之上。对于某个URI请求,我必须处理两个参数(资源ID和项)。我必须用路径变量、查询字符串或它们的组合来参数化它们。我能够接受一个参数。我在URL中查找两者。如何在URL中有两个参数?+1用于isLeaf部分(工作正常)。顺便说一下,对于上半部分,我得到了TypeError:\uuuu init\uuuu()正好接受2个参数(给定1个)
@Jean Paul你能更详细地解释一下为什么我(在第一部分)会出现这个错误吗?据我所知,root=FirstSegment()
中的FirstSegment
类还需要一个参数。我错过了什么吗?是的,你是对的,我错了。我编辑了这个示例来解决这个问题。获取“没有这样的资源没有这样的子资源”。什么时候做?