django.core.handlers.wsgi.WSGIHandler{
"中间件链"元素_0 {
"中间件链"元素_1 {
"中间件链"元素_2 {
1、匹配出路由
2、调用 action 方法
}
}
}
}
httpd === django.core.servers.basehttp.WSGIServer {
# !!! WSGIServer 存有对 WSGIHandler 的引用 !!! httpd.set_app(wsgi_handler)
1、启动 socket 监听
2、实例化 RequestHandlerClass === django.core.servers.basehttp.WSGIRequestHandler 处理请求
{
# !!! WSGIRequestHandler 存有对 WSGIServer 的引用 !!! self.WSGIRequestHandler(request, client_address, WSGIServer)
2.1、实例化 django.core.servers.basehttp.ServerHandler ,并调用 handler.run(self.server.get_app()) 处理请求
{
# !!! ServerHandler 存有对 WSGIRequestHandler 的引用 !!! handler.request_handler = WSGIRequestHandler
2.1.1、调用 django.core.handlers.wsgi.WSGIHandler 的 __call__ 方法
{
# 创建 request 对象 django.core.handlers.wsgi.WSGIRequest
# 执行"中间件链",响应 response 对象
}
}
}
}