CBV下根据请求方式执行不同方法
django
从url 出发,
re_path(r"^student/", views.StudentView.as_view())
,通过as_view可以看到里面有一个view方法,返回值是self.dispatch(request, *args, **kwargs)
, dispatch里是通过getatter反射来实现这个功能的def dispatch(self, request, *args, **kwargs): # Try to dispatch to the right method; if a method doesn't exist, # defer to the error handler. Also defer to the error handler if the # request method isn't on the approved list. if request.method.lower() in self.http_method_names: # 通过反射实现不同的请求方式执行不同的函数 handler = getattr( self, request.method.lower(), self.http_method_not_allowed ) else: handler = self.http_method_not_allowed return handler(request, *args, **kwargs)
2023年9月8日大约 4 分钟