Django-DRF | GenericAPIView 视图类

☆樱花仙子☆ 提交于 2021-02-08 14:29:41

Django-DRF | APIView 视图类

Django REST框架构建Web API。Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(表单)的使用。
from rest_framework.generics import GenericAPIViewfrom rest_framework.mixins import ListModelMixin, RetrieveModelMixin, CreateModelMixin, UpdateModelMixin, DestroyModelMixin

一、GenericAPIView 基类

GenericAPIView 继承自 APIView,主要增加了操作序列化和数据库查询的方法,作用是为下面 Mixin 扩展类的执行提供方法支持。通常在使用时,可搭配一个或多个 Mixin 扩展类。


  • 指明视图使用的序列化器

① 通过属性:

serializer_class

② 通过方法:

get_serializer_class(self)

get_serializer(self, args, *kwargs)

  • 数据库查询的属性与方法

指明使用的数据查询集

① 通过属性

queryset

② 通过方法

get_queryset(self)

get_object(self)

class BookListView(GenericAPIView):    """使用GenericAPIView实现“获取所有图书信息”接口"""    serializer_class = BookSerializer # 指定序列化器    queryset = Book.objects.all() # 指定查询集        def get(self, reqeust):        """获取所有图书信息 GET /books/ :param reqeust: Request类型的对象 :return: JSON"""        book = self.get_queryset() # 获取查询集        serializer = self.get_serializer(book, many=True)# 创建序列化器对象        return Response(serializer.data) # 响应序列化后的数据


二、GenericAPIView 扩展类

GenericAPIView 的五个拓展类提供了五个方法分别进行增删改查的不同操作。

搭配 GenericAPIView 使用

  • ListModelMixin 提供 list 方法快速实现列表视图

  • CreateModelMixin 提供 create 方法快速实现创建资源的视图

  • RetrieveModelMixin 提供 retrieve 方法,可以快速实现返回一个存在的数据对象(传入pk)

  • UpdateModelMixin 提供 update 方法,可以快速实现更新一个存在的数据对象。提供 partial_update 方法,实现局部更新

  • DestroyModelMixin 提供 destroy 方法,快速实现删除一个存在的数据对象

class BookDetailView(mixins.RetrieveModelMixin, GenericAPIView):    """使用GenericAPIView实现“获取单一图书信息”接口"""    serializer_class = BookSerializer # 指定序列化器    queryset = Book.objects.all() # 指定查询集        def get(self, request, pk):    """获取单一图书信息 GET /books/<pk>/ :param request: Request类型的对象 :return: JSON"""        return self.retrieve(request)

推荐

Django-DRF | 请求

Django-DRF | HttpResponse 响应

Django-DRF | Serializer 序列化

Django-DRF | ModelSerializer 序列化

Django-DRF | APIView 视图类

 点一下阅读原文吐槽云团小公举吧~

本文分享自微信公众号 - 数据云团(SmartData)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

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