day 80 视图家族

我的未来我决定 提交于 2019-12-05 07:24:30

1、View:将请求方式与视图类的同名方法建立映射,完成请求响应

# 将所有 请求方式 与 响应方法名 的映射关系交给用户自己配置url(r'^v5/students/$', views.StudentModelViewSet.as_view({    'get': 'list',    'post': 'my_post'})),url(r'^v5/students/(?P<pk>\d+)/$', views.StudentModelViewSet.as_view({    'get': 'retrieve',    'put': 'update',    'patch': 'partial_update',    'delete': 'destroy'}))
from rest_framework.viewsets import ModelViewSetclass StudentModelViewSet(ModelViewSet):    queryset = models.Student.objects.all()    serializer_class = serializers.StudentModelSerializer    def my_post(self, request, *args, **kwargs):        return Response('my post ok')


2、APView:
1)View的所有功能;
2)重写as_view禁用csrf认证;
3)重写dispatch:请求、响应、渲染、异常、解析、三大认证
4)多了一堆类属性,可以完成视图类的局部配置

3、GenericAPIView:
1)APView的所有功能
2)三个方法:get_object()、get_queryset()、get_serializer()
3)三个属性:queryset、serializer_class、lookup_url_kwarg

4、mixins包:
1)五大工具类:RetrieveModelMixin, ListModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin
2)六大工具方法:retrieve、list、create、update、partial_update、destroy

5、generics包:
1)一堆mixins工具类与GenericAPIView视图基类组合

6、ViewSetMixin
1)重写as_view(),完成请求方式与视图方法的自定义映射
as_view({'get': 'my_get'})

7、视图集基类:
ViewSet(ViewSetMixin, APIView):可以自定义映射关系的APIView
GenericViewSet(ViewSetMixin, GenericAPIView):可以自定义映射关系的GenericAPIView

8、常用Model视图集
1)ModelViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,
GenericViewSet)
某一资源的六大操作视图集

2)ReadOnlyModelViewSet(mixins.RetrieveModelMixin,
mixins.ListModelMixin,
GenericViewSet)
某一资源的只读操作视图集

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!