''' 说一下CBV(class+base+views)和FBV(function+base+views),我们之前Django 里写的都是FBV,今天看一下 CBV,也就是在我们的视图函数里写类 ''' CBV 总结: 1、 from django.views import View class CBVTest(View): #这里我们的class 得继承View,这里我么看一下View的源码,支持的http方法为http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace'] def dispatch(self, request, *args, **kwargs): # 这里我们可以重写父类的分发方法 print('111') obj=super().dispatch(request,*args,**kwargs) return obj def get(self,request): # 这里所有的get请求都会走到这里,这里我们在urlpattern里views.CBVTest.as_view(),我们看一下as_view的源码知道,他会返回一个view,这个到时候要是get请求,那么这里就会调用views.CBVTest.get函数 print(request.method) return render(request,'test.html') def post(self,request): name=request.POST.get('name') pwd=request.POST.get('pwd') if name=='bigbao' and pwd=='123': return HttpResponse('登录成功') else: return render(request,'test.html') 2、修改urls.py path('test/',views.CBVTest.as_view()) 其实上面的和FBV是一样的,我们可以通过requst.method=='GET'来判断然后操作是一样的