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()) ]
-
提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)
-
可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性
原理:
url → view函数 → dispatch方法(反射执行其他方法:GET/PPOST/DELET/PUT)