django rest_framework实现CBV,FBV

首先咱们若是用传统方式在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('删除订单')
相关文章
相关标签/搜索