【发布时间】:2016-05-13 20:07:40
【问题描述】:
在遍历金字塔应用程序中,如何处理带有与视图名称匹配的__name__ 的资源?
如果我想访问资源的视图可调用“视图”,我会使用如下 URL 路径:/foo/bar/view。它像这样遍历resource_tree:
RootFactory(request) => RootFactory
RootFactory['foo'] => Foo
Foo['bar'] => Bar
Bar['view'] => KeyError
...因为它无法遍历 Bar 并且留下了“视图”,它假定“视图”是视图名称,并且与我的可调用视图匹配
@view_config(name='view')
def view(context, request):
return Response(context.__name__)
要获取该路径的 URL,我会使用 request.resource_url(resource, "view")。
但是,如果我有 Bar.__name__ = "view" 这样的资源,我如何解析 Foo 上“视图”的 URL?
# path: /foo/view
RootFactory(request) => RootFactory
RootFactory['foo'] => Foo # ideally stop here with view_name="view"
Foo['view'] => Bar.__name__ = "view"
# all parts of path matched so view_name="" and context=Bar
理想情况下,在这种情况下,/foo/view 将指向 view(Foo, request),/foo/view/view 将指向 view(Bar, request),其中 Bar.__name__ == "view"。
有没有办法在不写检测__name__ 和视图名称之间的冲突的情况下处理这个问题?
【问题讨论】:
标签: python url-routing pyramid traversal dom-traversal