Django-rest Framework(六)

不懂使用机制的直接看源码就好了,也不是很难,能够看得懂

视图家族

1. View:将请求方式与视图类的同名方法建立映射,完成请求响应(原生django)

from django.views import View

2. APIView(rest_framework)

from rest_framework.views import View
  1. 继承View ,具有View的所有功能
  2. 重写as_views禁用csrf认证
  3. 重写了dispatch:请求 响应 渲染 异常 解析 三大认证
  4. 多了一堆类属性,可以完成视图类的局部配置

3. GenricAPIView

from rest_framework.generics import GenericAPIView
  1. 继承APIView的所有功能
  2. 三个方法: get_object() get_queryset() get_serializer()
  3. 三个属性: queryset serializer_class lookup_urk_kwarg

4. mixins包:

from rest_framework import mixins
from rest_framework.mixins import CreateModelMixin,UpdateModelMixin,RetrieveModelMixin,ListModelMixin,DestroyModelMixin
  1. 五大工具类 : RetrieveModelMixin , ListModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin
  2. 六大工具方法: retrieve, list, create, update, partial_update, destroy

5. generics包

from rest_framework import generics
  1. 一堆mixins工具类与GenericAPIView视图基类组合

6. ModelViewSet

  1. 视图集,继承了mixins所有的类 和 GenericAPIView所有的方法

  2. 使用:

    #在view.py中
        from rest_framework.viewsets import ModelViewSet
        class CarAPIView(ModelViewSet):
            queryset = models.car.objects.all()
            serializer_class = Serializers.CarSerializer
    #在urls.py中(这里的car只是用来做例子)
        urlpatterns = [
    
        #以什么方式请求,就要在字典中,写上请求方式和请求的函数              
        url(r'^car/$',views.CarAPIView.as_view({'get':'list','post':'create'})),
        url(r'^car/(?P<pk>\d+)',views.CarAPIView.as_view({'get':'retrieve','put':'update','patch':'partial_update'}))
    ]
    
    

猜你喜欢

转载自www.cnblogs.com/kuck/p/11921941.html
今日推荐