django-rest-framework學習初體驗-01-27

django-rest-framework

類視圖

繼承:主要由三個

from rest_framework import mixins, generics, viewsets, permissions

每個類視圖都必須由apiview,把類視圖解析成視圖函數用,再集成其他的mixins,也有框架自己集成好的,用viewsets

1. mixins
    裏面有集成好的各種方法,有:list/retrieve/create/update/destory
    也有組合好的
    必須和apiview(viewsets.GenericsAPIView)配合使用,兩個都得有
2. generics
    裏面主要是封裝了mixins,有幾種簡單的組合,可以方便使用,注意必須和viewsets配合使用
    ListAPIView / RetrieveAPIView / CreateAPIView / ListCreateAPIView .....
3. viewsets
    裏面頁由封裝的mixins和APIView,如:ModelAPIView把所有的方法(5種)都寫到了裏面,當然還有其他組合,其他兩項都必須和viewsets配合使用

參數

  1. queryset 是能夠操作的查詢集
  2. permission_classes 是權限組,元組,可以自定義權限類,自定義要繼承自permissions.BasePermission

    
    
    # request是請求,view是視圖函數,obj是操作的對象
    
    class MyPermission(permissions.BasePermission):
        def has_object_permission(self, request, view, obj):
            return obj.user == request.user
    
    # 這個類意思是:請求user必須是obj的user才能操作
    
    # 使用方法
    permission_classes = (MyPermission,)
    
  3. serializer_class = UserInfoSerializer
    處理函數的serializer,可以給同一個類視圖中不同方法不同視圖,就是改寫視圖方法,記着把context寫進去,不然圖片url會不全

router 路由註冊

from rest_framework import routers

  1. 生成路由

    router = routers.SimpleRouter()

  2. 註冊視圖

    router.register(r’users’, views.UserInfoView)

  3. 添加到url

    urlpatterns += router.urls

  4. router的坑

    類視圖函數繼承as_view函數的時候最好用viewsets.GenericViewSet,否則可能會報錯,不要用generic.GenericApiView

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章