不懂使用机制的直接看源码就好了,也不是很难,能够看得懂
视图家族
1. View:将请求方式与视图类的同名方法建立映射,完成请求响应(原生django)
from django.views import View
2. APIView(rest_framework)
from rest_framework.views import View
- 继承View ,具有View的所有功能
- 重写as_views禁用csrf认证
- 重写了dispatch:请求 响应 渲染 异常 解析 三大认证
- 多了一堆类属性,可以完成视图类的局部配置
3. GenricAPIView
from rest_framework.generics import GenericAPIView
- 继承APIView的所有功能
- 三个方法: get_object() get_queryset() get_serializer()
- 三个属性: queryset serializer_class lookup_urk_kwarg
4. mixins包:
from rest_framework import mixins
from rest_framework.mixins import CreateModelMixin,UpdateModelMixin,RetrieveModelMixin,ListModelMixin,DestroyModelMixin
- 五大工具类 : RetrieveModelMixin , ListModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin
- 六大工具方法: retrieve, list, create, update, partial_update, destroy
5. generics包
from rest_framework import generics
- 一堆mixins工具类与GenericAPIView视图基类组合
6. ModelViewSet
-
视图集,继承了mixins所有的类 和 GenericAPIView所有的方法
-
使用:
#在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'})) ]