django rest_framework实现CBV,FBV

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

 

2bfa25597012a731af566519ed3abbbf1d3.jpg

因此出现两种CBV和FBV

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

aa3ed989f20aabd7f5818fe868f981d3982.jpg

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

6115358ce3a270cf1db54eadc5f2780875b.jpg

运行:

d72b49d8e1ad3bb1cdc74a0e977cf9c5d7d.jpg

代码实现:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值