首先咱们若是用传统方式在url里面定义路由,在view里面处理函数,好比订单类,一张表增删改查须要四个url对应对应四个def函数,若是需求多(多张表,如10张,40个url,40个函数),咱们岂不是要累死 。restful
所以出现两种CBV和FBV函数
CBV :在views里面定义类,而后列举四个函数,处理。post
FBV:在views里面定义函数,用if对请求进行判断url
运行:rest
代码实现:blog
a. 接口开发 urlpatterns = [ # url(r'^admin/', admin.site.urls), url(r'^get_order/', views.get_order), url(r'^add_order/', views.add_order), url(r'^del_order/', views.del_order), url(r'^update_order/', views.update_order), ] def get_order(request): return HttpResponse('') def add_order(request): return HttpResponse('') def del_order(request): return HttpResponse('') def update_order(request): return HttpResponse('') b. restful 规范(建议) 1. 根据method不一样作不一样的操做,示例: 基于FBV: urlpatterns = [ url(r'^order/', views.order), ] def order(request): if request.method == 'GET': return HttpResponse('获取订单') elif request.method == 'POST': return HttpResponse('建立订单') elif request.method == 'PUT': return HttpResponse('更新订单') elif request.method == 'DELETE': return HttpResponse('删除订单') 基于CBV: urlpatterns = [ url(r'^order/', views.OrderView.as_view()), ] class OrderView(View): def get(self,request,*args,**kwargs): return HttpResponse('获取订单') def post(self,request,*args,**kwargs): return HttpResponse('建立订单') def put(self,request,*args,**kwargs): return HttpResponse('更新订单') def delete(self,request,*args,**kwargs): return HttpResponse('删除订单')