扭曲,如何 "putChild()" 尾部斜杠?

Twisted, how to "putChild()" with trailing slash?

我正在使用 twisted 并制作了一个网络服务器,但是当我尝试请求带有尾部斜杠的页面时,我得到了

"No Such Resource - No such child resource."

这些我都试过了

    self.putChild('login', Login(self))
    self.putChild('/login/', Login(self))
    self.putChild('/login', Login(self))
    self.putChild('login/', Login(self))

甚至尝试覆盖 'getChildWithDefault' 方法,并尝试请求带有斜线和不带斜线的页面,它总是说路径是 'login',没有斜线,所以它应该总是匹配第一个行,但不是 w.e 原因。

有人知道如何使用尾部斜杠添加子资源吗?

您不能将斜杠传递给 putChild;它将被 URL 遍历逻辑转义,因为参数是单个路径段。

假设 Login 本身就是一个 Resource,你可以把 本身 放到它自己上,这样 /login/login/ 会起作用,像这样:

l = Login(self)
l.putChild("", l)
self.putChild("login", l)

您当然可以将不带尾部斜杠的 /login 设为您自己设计的资源,或者将 twisted.web.util.Redirect 添加斜杠; assemble 您喜欢的配置中的资源 :)。