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)

 

posted on 2018-12-03 14:55  sjx6688  阅读(100)  评论(0)    收藏  举报