defdispatch(self, request, *args, **kwargs): """ `.dispatch()` is pretty much the same as Django's regular dispatch, but with extra hooks for startup, finalize, and exception handling. """ self.args = args self.kwargs = kwargs request = self.initialize_request(request, *args, **kwargs) # 实例化封装后的request对象 self.request = request self.headers = self.default_response_headers # deprecate?
try: self.initial(request, *args, **kwargs)
# Get the appropriate handler method if request.method.lower() in self.http_method_names: handler = getattr(self, request.method.lower(), # 反射机制,获取request.method.lower()的内存地址,如果在的话 self.http_method_not_allowed) else: handler = self.http_method_not_allowed