码迷,mamicode.com
首页 > 其他好文 > 详细

视图类

时间:2021-04-30 12:36:05      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:EAP   eric   gen   hvie   python   elm   实例化   有一个   修改   

两个视图基类

1 APIView	# 基础类
	from rest_framework.views import APIView

2 GenericAPIView	# 封装一些有关数据库操作
	# GenericAPIView(APIView)
	from rest_framework.generics import GenericAPIView	
    -属性:
     	queryset = models.Publish.objects.all()  # 要序列化的数据
     	serializer_class = serializer.PublishSerializer  # 序列化器的类
    -方法:
    	get_queryset:获取qs数据
        get_object:获取一条数据的对象
        get_serializer:以后使用它来实例化得到ser对象
        get_serializer_class:获取序列化类,注意跟上面区分

五个视图扩展类

from rest_framework.mixins import *

# 每个类内部只有一个方法,一个类只完成一个事
CreateModelMixin		# create方法创建一条
RetrieveModelMixin		# retrieve获取一条
DestroyModelMixin		# destory方法删除一条
ListModelMixin			# list方法获取所有
UpdateModelMixin		# update修改一条

九个子类视图

from rest_framework.generics import *

# 单功能
CreateAPIView					# 有post方法,新增数据
	# 继承CreateModelMixin,GenericAPIView
    
DestroyAPIView					# 有delete方法,删除数据
	# 继承DestroyModelMixin,GenericAPIView
    	
ListAPIView						# 有get方法获取所有
	# 继承ListModelMixin,GenericAPIView
    
UpdateAPIView					# 有put和patch方法,修改数据
	# 继承UpdateModelMixin,GenericAPIView
    
RetrieveAPIView					# 有get方法,获取一条
	# 继承RetrieveModelMixin,GenericAPIView
    
    
# 复功能
ListCreateAPIView				# 有get获取所有,post方法新增
	# 继承ListModelMixin,CreateModelMixin,GenericAPIView
    
RetrieveDestroyAPIView			# 有get方法获取一条,delete方法删除
	# 继承RetrieveModelMixin,DestroyModelMixin,GenericAPIView
    
RetrieveUpdateAPIView			# 有get获取一条,put,patch修改
	# 继承RetrieveModelMixin,UpdateModelMixin,GenericAPIView
    
RetrieveUpdateDestroyAPIView	# 有get获取一条,put,patch修改,delete删除
	# 继承RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin,GenericAPIView

视图集

from rest_framework.viewsets import *

ViewSetMixin			# 重写了as_view 
	# 如果视图类继承了ViewSetMixin这个类,路由的as_view执行的是ViewSetMixin的as_view
    # 路由写法就需要 path(‘publish/‘, views.PublishView.as_view({‘get‘: ‘list‘, ‘post‘: ‘create‘}))
    
ViewSet					# 继承ViewSetMixin和APIView

GenericViewSet			# 继承ViewSetMixin, generics.GenericAPIView

ModelViewSet 			# 5个接口都有
	‘‘‘继承了	mixins.CreateModelMixin,
              mixins.RetrieveModelMixin,
              mixins.UpdateModelMixin,
              mixins.DestroyModelMixin,
              mixins.ListModelMixin,
              GenericViewSet
    ‘‘‘      
    
ReadOnlyModelViewSet	# 只有读的两个接口
	‘‘‘继承了	mixins.RetrieveModelMixin,
              mixins.ListModelMixin,
              GenericViewSet
	‘‘‘

视图类的继承原则

    -如果不涉及数据库操作:继承APIView
    -如果想让路由可以映射:继承ViewSetMixin
    -如果不涉及数据库操作,又要让路由可以映射:继承ViewSet
    	-比如发邮件接口,发短信接口
    
    -如果涉及到数据库操作:继承GenericAPIView
    -如果想让路由可以映射:继承ViewSetMixin
    -如果涉及数据库操作,又要让路由可以映射:继承GenericViewSet
    -如果涉及数据库操作,又要让路由可以映射,还要能新增:继承GenericViewSet+CreateModelMixin或者继承ViewSetMixin+CreateAPIView
    
    -如果只涉及到数据库操作和新增:继承CreateAPIView

视图类

标签:EAP   eric   gen   hvie   python   elm   实例化   有一个   修改   

原文地址:https://www.cnblogs.com/shof/p/14720698.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!