考虑以下 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()
/foo
这个应用程序使用 Traversal并且响应/foo/bar
很好。我想知道,在遍历时/foo/booarns
,是否有一些地方可以在 Traversal 决定返回 404 之前挂钩。类似于默认或后备视图:
config.add_view(any_other, name="*default*", context=Foo, ...)
然后,只要路径的第二个组件没有绑定到任何其他视图,在相同的上下文中,这个视图就会被调用,并且路径组件仍然可用request.view_name
和request.subpath
。