django---FBV与CBV

1、FBV

function base view 

即在视图里使用函数处理请求;url中一个路径对应一个函数

def user(request):
    user_list = ['sjx','zl']
    return HttpResponse(json.dumps(user_list)) 

  

urlpatterns = [
    url(r'^user/', user),

]

2、CBV

class base view

在视图里使用类处理请求;在url中一个路径对应一个类

class StudentsView(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')
urlpatterns = [
 
    url(r'^students/',StudentsView.as_view())

]

优点:

  1. 提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)

  2. 可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性

CBV:基于反射,根据请求方式的不同,执行不同的方法

原理:

url → view函数 → dispatch方法(反射执行其他方法:GET/PPOST/DELET/PUT)

原文地址:https://www.cnblogs.com/sjx6688/p/10058479.html