CBV,基于反射实现根据请求方式的不同,执行不同的方法.
查看view源码,使用反射getattr(self, request.method.lower(), self.http_method_not_allowed),调用对方法
url->view->dispatch->执行get,post....等方法
#Django_rest_framwork自定义CBV
from django.shortcuts import render from django.views import View from django.http import HttpResponse # Create your views here. class MyBaseView(object): def dispatch(self, request, *args, **kwargs): print('before') ret = super(MyBaseView, self).dispatch(request, *args, **kwargs) print('after') return ret class studentView(MyBaseView, View): def get(self, request, *args, **kwargs): return HttpResponse('get') def post(self, request, *args, **kwargs): return HttpResponse('post') def put(self, request, *args, **kwargs): return HttpResponse('put') def delete(self, request, *args, **kwargs): return HttpResponse('delete')