# GenericAPIView继承自APIVIew,增加了对于列表视图和详情视图可能用到的通用支持方法。
# 常用属性
'''
queryset 列表视图的查询集
serializer_class 视图使用的序列化器
pagination_class 分页控制类
filter_backends 过滤控制后端
lookup_field 查询单一数据库对象时使用的条件字段,默认为'pk'
lookup_url_kwarg 查询单一数据时URL中的参数关键字名称,默认与look_field相同
'''
# 常用方法:
'''
get_queryset(self) 返回视图使用的查询集,是列表视图与详情视图获取数据的基础,默认返回queryset属性
get_serializer_class(self) 返回序列化器类,默认返回serializer_class
get_serializer(self, args, *kwargs) 返回序列化器对象,被其他视图或扩展类使用,如果 我们在视图中想要获取序列化器对象,可以直接调用此方法
get_object(self) 返回详情视图所需的模型类数据对象,默认使用lookup_field参数来过滤 queryset。 在试图中可以调用该方法获取详情信息的模型类对象。
'''
# 扩展类:
'''
ListModelMixin列表视图扩展类,提供list(request, *args, **kwargs)方法快速实现列表视图,返回200状态码
CreateModelMixin创建视图扩展类,提供create(request, *args, **kwargs)方法快速实现创建资源的视图,成功返回201状态码
RetrieveModelMixin详情视图扩展类,提供retrieve(request, *args, **kwargs)方法,可以快速实现返回一个存在的数据对象
UpdateModelMixin更新视图扩展类,提供update(request, *args, **kwargs)方法,可以快速实现更新一个存在的数据对象
DestroyModelMixin删除视图扩展类,提供destroy(request, *args, **kwargs)方法,可以快速实现删除一个存在的数据对象
'''
视图函数继承
class BookView(RetrieveModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin, GenericAPIView):
# 属性
queryset = TuShu.objects.all() # 查询结果集
serializer_class = TuShuSerializer # 序列化集
lookup_field = "tid"
# RetrieveModelMixin扩展类
def get(self, request, tid): # 查询单条
return self.retrieve(request)
# CreateModelMixin 添加扩展类
def post(self, request):
return self.create(request)
# UpdateModelMixin更新扩展类
def put(self, request, tid):
return self.update(request)
# DestroyModelMixin删除扩展类
def delete(self, request, tid):
return self.destroy(request)
# 路径
path('bookview/<tid>/', BookView.as_view()),
path('bookview/', BookView.as_view()),
标签:request,self,args,扩展,视图,34,kwargs,DRF
From: https://www.cnblogs.com/kh-1314/p/17149663.html