トラバーサルピラミッドアプリでは、ビューの名前と一致する__name__
のリソースをどのように扱いますか?ピラミッドトラバーサル__name__ビュー名に一致
リソースのビュー呼び出し可能なビューにアクセスしたい場合は、/foo/bar/view
のようなURLパスを使用します。それはそうとresource_treeを横断:
RootFactory(request) => RootFactory
RootFactory['foo'] => Foo
Foo['bar'] => Bar
Bar['view'] => KeyError
...そして、それは過去のバーを通過することはできませんので&「ビュー」が残され、それが「ビューは、」ビュー名であることを前提としていて、私の見解と一致します呼び出し可能
@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__
とビュー名の間の衝突を検出しないでこれを処理する方法はありますか?