Python CBV和FBV

'''
说一下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'来判断然后操作是一样的

  

posted @ 2018-09-14 15:10  BigBao的博客  阅读(917)  评论(0编辑  收藏  举报