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'}))
    ]
    
    
    
posted @ 2019-11-24 12:33  来年若相见  阅读(229)  评论(0编辑  收藏  举报