subsystem takes over to find the most reasonable view callable for the matched route” WTF? Pyramid build a lookup resolution tree and detects conflict in the views configs. Use pviews cmd to analyse the views lookup
a Template. The view needs to return a dict to populate the context renderer='templates/home.pt' renderer='package:templates/home.mak' renderer='home.jinja2'
code, it invokes a not found view from pyramid.view import notfound_view_config @notfound_view_config() def notfound(request): return Response('Not Found, dude', status='404 Not Found') config.add_notfound_view(notfound) Or
policy, it invokes a forbidden view from pyramid.view import forbidden_view_config @forbidden_view_config() def forbidden(request): return Response('forbidden') config.add_forbidden_view(forbidden_view) Or
directly to a route config.add_route('home', '/', view= function_view) - You can event use Python dotted name config.add_route('home', '/', view= 'module.function_view')