從cbv到fbv:用函數寫視圖與用類寫視圖的區別(drf與restful)

FBV 基於函數的視圖 (function base views)restful

CBV 基於類的視圖 (class base views)函數

也就是說咱們是用函數編寫視圖~仍是類編寫視圖咱們來看下兩個的簡單實現post

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")url

class TestCBV(View): ##類式視圖
def get(self, request):
return HttpResponse("ok")
CBV會執行as_view()方法,rest

a. 接口開發code

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('刪除訂單')
相關文章
相關標籤/搜索