扭曲的子孙

时间:2018-04-10 14:17:00

标签: python twisted

我正在尝试创建一个嵌套资源(子级),其中主子级没有任何东西,只是一个虚拟页面,如果有的话。例如,我正在尝试制作以下资源。

/saml/login
/saml/logout
/saml/acs
/saml/sls

但是我没有或者真的需要/ saml资源,只需要孩子们。

我不确定如何添加单个子子节点,更不用说没有父节点的子节点,如果需要,我可以创建一个虚拟/ saml资源,但仍然需要嵌套页面。

这是我到目前为止所拥有的。

class Hello(Resource):
    isLeaf = True

    def getChild(self, name, request):
        if name == '':
            return self
        return Resource.getChild(self, name, request)

    def render_GET(self, request):
        return b"Hello, world! I am located at"

class SamlManager(object):
    def __init__(self, **kwargs):
        for k, v in kwargs.items():
            setattr(self, k, v)
        self.login_callback = None

    def init_app(self, root):
        root.saml_manager = self  # expose for login_from_acs
        root.putChild(b'saml', Hello())

1 个答案:

答案 0 :(得分:1)

您可以将NoResource用于要在请求时返回404响应的资源:

from twisted.web.resource import Resource, NoResource

saml = NoResource()
saml.putChild(b"login", ...)
saml.putChild(b"logout", ...)
...

root = Resource()
root.putChild(b"saml", saml)