django rest_framework实现CBV,FBV

首先我们如果用传统方式在url里面定义路由,在view里面处理函数,比如订单类,一张表增删改查需要四个url对应对应四个def函数,如果需求多(多张表,如10张,40个url,40个函数),我们岂不是要累死 。

 

django rest_framework实现CBV,FBV

因此出现两种CBV和FBV

CBV :在views里面定义类,然后列举四个函数,处理。

django rest_framework实现CBV,FBV

FBV:在views里面定义函数,用if对请求进行判断

django rest_framework实现CBV,FBV

运行:

django rest_framework实现CBV,FBV

代码实现:

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('删除订单')

 

转载于:https://my.oschina.net/u/3648651/blog/1839429