ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

从cbv到fbv:用函数写视图与用类写视图的区别(drf与restful)

2019-11-24 21:53:17  阅读:284  来源: 互联网

标签:用类 return fbv request 视图 HttpResponse order def


FBV 基于函数的视图 (function base views)

CBV 基于类的视图 (class base views)

也就是说我们是用函数编写视图~还是类编写视图我们来看下两个的简单实现

urlpatterns = [
path(‘admin/‘, admin.site.urls),
path(‘test_fbv‘, test_fbv), #FBV
path(‘test_cbv‘, TestCBV.as_view()) #CBV]
def test_fbv(request): ##函数式视图
return HttpResponse("ok")

class TestCBV(View): ##类式视图
def get(self, request):
return HttpResponse("ok")
CBV会执行as_view()方法,

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

标签:用类,return,fbv,request,视图,HttpResponse,order,def
来源: https://www.cnblogs.com/ayongxin93/p/11924574.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有