次の Pyramid アプリケーションを検討してください。
from pyramid.config import Configurator
class Foo(dict):
pass
def make_root(request):
return {'foo': Foo()}
def foo(request):
return request.subpath
def bar(request):
return {"whoami": "bar", "subpath": request.subpath}
def start(global_config, **settings):
config = Configurator(settings=settings)
config.set_root_factory(make_root)
config.add_view(foo, context=Foo, renderer="json")
config.add_view(bar, name="bar", context=Foo, renderer="json")
return config.make_wsgi_app()
このアプリケーションは Traversal を使用し、正常に応答し/foo
ます/foo/bar
。トラバースするときに/foo/booarns
、トラバーサルが 404 を返すことを決定する前にフックする場所があるかどうか疑問に思っていました。デフォルトまたはフォールバックビューのようなもの:
config.add_view(any_other, name="*default*", context=Foo, ...)
次に、同じコンテキスト内で、パスの 2 番目のコンポーネントが他のビューにバインドされていないときはいつでも、このビューが呼び出され、パス コンポーネントはrequest.view_name
およびとして引き続き使用できますrequest.subpath
。