现在的位置: 首页 > 综合 > 正文

webapp2源码笔记

2018年04月12日 ⁄ 综合 ⁄ 共 885字 ⁄ 字号 评论关闭
class Router(object):
    def default_dispatcher(self, request, response):
        """Dispatches a handler.


        :param request:
            A :class:`Request` instance.
        :param response:
            A :class:`Response` instance.
        :raises:
            ``exc.HTTPNotFound`` if no route matched or
            ``exc.HTTPMethodNotAllowed`` if a route matched but the HTTP
            method was not allowed.
        :returns:
            The returned value from the handler.
        """
        route, args, kwargs = rv = self.match(request)
        request.route, request.route_args, request.route_kwargs = rv


        if route.handler_adapter is None:
            handler = route.handler
            if isinstance(handler, basestring):
                if handler not in self.handlers:
                    self.handlers[handler] = handler = import_string(handler)
                else:
                    handler = self.handlers[handler]


            #找到合适的handler caller(adapter)
            # 所谓的handler适配器,面对的情况是:
            #      可能有多个handler,并且每个handler的handle过程不相同。
            #      适配器负责选择handler进行调用它,按照其相应过程。
            route.handler_adapter = self.adapt(handler)
	   # route保存了handle adapter(其实就是保存了一个handler,及使用该handler的方法)

        return route.handler_adapter(request, response)

抱歉!评论已关闭.